]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: interrupt kvm_gmem_populate() on signals
authorPaolo Bonzini <pbonzini@redhat.com>
Fri, 7 Jun 2024 16:10:29 +0000 (18:10 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 20 Jun 2024 21:28:44 +0000 (17:28 -0400)
kvm_gmem_populate() is a potentially lengthy operation that can involve
multiple calls to the firmware.  Interrupt it if a signal arrives.

Fixes: 1f6c06b177513 ("KVM: guest_memfd: Add interface for populating gmem pages with user data")
Cc: Isaku Yamahata <isaku.yamahata@intel.com>
Cc: Michael Roth <michael.roth@amd.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
virt/kvm/guest_memfd.c

index 9714add388525b9d4e71ea514c48cc409cd32c64..3bfe1824ec2d8616eed596c124dd43508a894b7a 100644 (file)
@@ -629,6 +629,11 @@ long kvm_gmem_populate(struct kvm *kvm, gfn_t start_gfn, void __user *src, long
                gfn_t gfn = start_gfn + i;
                kvm_pfn_t pfn;
 
+               if (signal_pending(current)) {
+                       ret = -EINTR;
+                       break;
+               }
+
                ret = __kvm_gmem_get_pfn(file, slot, gfn, &pfn, &max_order, false);
                if (ret)
                        break;