KVM: VMX: Don't register posted interrupt wakeup handler if alloc_kvm_area() fails

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: ec5a4919fa ("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>
This commit is contained in:
Hou Wenlong 2026-01-13 19:56:50 +08:00 committed by Sean Christopherson
parent ff8071eb3a
commit 6c8512a5b7

View 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;
}