]> www.infradead.org Git - users/jedix/linux-maple.git/commit
KVM: Return ERR_SIGPENDING from hva_to_pfn() if GUP returns -EGAIN
authorSean Christopherson <seanjc@google.com>
Thu, 10 Oct 2024 18:23:16 +0000 (11:23 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 25 Oct 2024 16:57:58 +0000 (12:57 -0400)
commitd1331a44694abbdb309cd3eb3e3d400134c670cf
tree55983aa57d6365d4295e93a2c71f60b1e03b37d7
parenteec1e5db464eba928273b27246122d157fd0eff8
KVM: Return ERR_SIGPENDING from hva_to_pfn() if GUP returns -EGAIN

Treat an -EAGAIN return from GUP the same as -EINTR and immediately report
to the caller that a signal is pending.  GUP only returns -EAGAIN if
the _initial_ mmap_read_lock_killable() fails, which in turn onnly fails
if a signal is pending

Note, rwsem_down_read_slowpath() actually returns -EINTR, so GUP is really
just making life harder than it needs to be.  And the call to
mmap_read_lock_killable() in the retry path returns its -errno verbatim,
i.e. GUP (and thus KVM) is already handling locking failure this way, but
only some of the time.

Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-ID: <20241010182427.1434605-15-seanjc@google.com>
virt/kvm/kvm_main.c