Revert "KVM: nVMX: move check_vmentry_postreqs() call to nested_vmx_enter_non_root_mo...
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2019 07:32:43 +0000 (08:32 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2019 08:20:17 +0000 (09:20 +0100)
This reverts commit 7392aa08f8a4386c99d5c6506a79e2ccd5b4701f which is
commit 7671ce21b13b9596163a29f4712cb2451a9b97dc upstream.

It should not have been selected for a stable kernel as it breaks the
nVMX regression tests.

Reported-by: Jack Wang <jack.wang.usish@gmail.com>
Reported-by: Paolo Bonzini <pbonzini@redhat.com>
Cc: Sean Christopherson <sean.j.christopherson@intel.com>
Cc: Jim Mattson <jmattson@google.com>
Cc: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/kvm/vmx.c

index e70b99c..fa2abed 100644 (file)
@@ -12690,9 +12690,6 @@ static int enter_vmx_non_root_mode(struct kvm_vcpu *vcpu, u32 *exit_qual)
        if (likely(!evaluate_pending_interrupts) && kvm_vcpu_apicv_active(vcpu))
                evaluate_pending_interrupts |= vmx_has_apicv_interrupt(vcpu);
 
-       if (from_vmentry && check_vmentry_postreqs(vcpu, vmcs12, exit_qual))
-               return EXIT_REASON_INVALID_STATE;
-
        enter_guest_mode(vcpu);
 
        if (!(vmcs12->vm_entry_controls & VM_ENTRY_LOAD_DEBUG_CONTROLS))
@@ -12836,6 +12833,13 @@ static int nested_vmx_run(struct kvm_vcpu *vcpu, bool launch)
         */
        skip_emulated_instruction(vcpu);
 
+       ret = check_vmentry_postreqs(vcpu, vmcs12, &exit_qual);
+       if (ret) {
+               nested_vmx_entry_failure(vcpu, vmcs12,
+                                        EXIT_REASON_INVALID_STATE, exit_qual);
+               return 1;
+       }
+
        /*
         * We're finally done with prerequisite checking, and can start with
         * the nested entry.