]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: VMX: Fix check for valid GVA on an EPT violation
authorSukrit Bhatnagar <Sukrit.Bhatnagar@sony.com>
Thu, 6 Nov 2025 05:28:51 +0000 (14:28 +0900)
committerSean Christopherson <seanjc@google.com>
Thu, 6 Nov 2025 14:06:18 +0000 (06:06 -0800)
On an EPT violation, bit 7 of the exit qualification is set if the
guest linear-address is valid. The derived page fault error code
should not be checked for this bit.

Fixes: f3009482512e ("KVM: VMX: Set PFERR_GUEST_{FINAL,PAGE}_MASK if and only if the GVA is valid")
Cc: stable@vger.kernel.org
Signed-off-by: Sukrit Bhatnagar <Sukrit.Bhatnagar@sony.com>
Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
Link: https://patch.msgid.link/20251106052853.3071088-1-Sukrit.Bhatnagar@sony.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/vmx/common.h

index bc5ece76533ae2fd968c5c26c8fbe3605fafd637..412d0829d7a21777c5969ba27293721e9aa3d1c5 100644 (file)
@@ -98,7 +98,7 @@ static inline int __vmx_handle_ept_violation(struct kvm_vcpu *vcpu, gpa_t gpa,
        error_code |= (exit_qualification & EPT_VIOLATION_PROT_MASK)
                      ? PFERR_PRESENT_MASK : 0;
 
-       if (error_code & EPT_VIOLATION_GVA_IS_VALID)
+       if (exit_qualification & EPT_VIOLATION_GVA_IS_VALID)
                error_code |= (exit_qualification & EPT_VIOLATION_GVA_TRANSLATED) ?
                              PFERR_GUEST_FINAL_MASK : PFERR_GUEST_PAGE_MASK;