]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: VMX: Don't register posted interrupt wakeup handler if alloc_kvm_area() fails
authorHou Wenlong <houwenlong.hwl@antgroup.com>
Tue, 13 Jan 2026 11:56:50 +0000 (19:56 +0800)
committerSean Christopherson <seanjc@google.com>
Wed, 14 Jan 2026 21:21:19 +0000 (13:21 -0800)
Unregistering the posted interrupt wakeup handler only happens during
hardware unsetup. Therefore, if alloc_kvm_area() fails and continue to
register the posted interrupt wakeup handler, this will leave the global
posted interrupt wakeup handler pointer in an incorrect state. Although
it should not be an issue, it's still better to change it.

Signed-off-by: Hou Wenlong <houwenlong.hwl@antgroup.com>
Fixes: ec5a4919fa7b ("KVM: VMX: Unregister posted interrupt wakeup handler on hardware unsetup")
Link: https://patch.msgid.link/0ac6908b608cf80eab7437004334fedd0f5f5317.1768304590.git.houwenlong.hwl@antgroup.com
[sean: use a goto]
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/vmx/vmx.c

index 97d696014f9a442bb77e0b413b5466fba580ac51..ccca182a346d286c4e075ba5ad4538eb6ac9ac84 100644 (file)
@@ -8708,8 +8708,8 @@ __init int vmx_hardware_setup(void)
        }
 
        r = alloc_kvm_area();
-       if (r && nested)
-               nested_vmx_hardware_unsetup();
+       if (r)
+               goto err_kvm_area;
 
        kvm_set_posted_intr_wakeup_handler(pi_wakeup_handler);
 
@@ -8736,6 +8736,11 @@ __init int vmx_hardware_setup(void)
 
        kvm_caps.inapplicable_quirks &= ~KVM_X86_QUIRK_IGNORE_GUEST_PAT;
 
+       return 0;
+
+err_kvm_area:
+       if (nested)
+               nested_vmx_hardware_unsetup();
        return r;
 }