]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: x86: check for nEPT/nNPT in slow flush hypercalls
authorPaolo Bonzini <pbonzini@redhat.com>
Mon, 27 Apr 2026 12:25:40 +0000 (14:25 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Sun, 3 May 2026 20:17:30 +0000 (22:17 +0200)
Checking is_guest_mode(vcpu) is incorrect, because translate_nested_gpa()
is only valid if an L2 guest is running *with nested EPT/NPT enabled*.
Instead use the same condition as translate_nested_gpa() itself.

Cc: stable@vger.kernel.org
Reviewed-by: Sean Christopherson <seanjc@google.com>
Fixes: aee738236dca ("KVM: x86: Prepare kvm_hv_flush_tlb() to handle L2's GPAs", 2022-11-18)
Link: https://patch.msgid.link/20260503200905.106077-1-pbonzini@redhat.com/
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/hyperv.c

index 9b140bbdc1d83b8a124c5e2bcebfc437e6ee1540..4438ecac9a89bb02e0335f84e4b7f7060b59161e 100644 (file)
@@ -2040,7 +2040,7 @@ static u64 kvm_hv_flush_tlb(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc)
         * flush).  Translate the address here so the memory can be uniformly
         * read with kvm_read_guest().
         */
-       if (!hc->fast && is_guest_mode(vcpu)) {
+       if (!hc->fast && mmu_is_nested(vcpu)) {
                hc->ingpa = translate_nested_gpa(vcpu, hc->ingpa, 0, NULL);
                if (unlikely(hc->ingpa == INVALID_GPA))
                        return HV_STATUS_INVALID_HYPERCALL_INPUT;