]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: nVMX: Rely on kvm_vcpu_unmap() to track validity of eVMCS mapping
authorSean Christopherson <seanjc@google.com>
Thu, 10 Oct 2024 18:23:25 +0000 (11:23 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 25 Oct 2024 16:57:59 +0000 (12:57 -0400)
Remove the explicit evmptr12 validity check when deciding whether or not
to unmap the eVMCS pointer, and instead rely on kvm_vcpu_unmap() to play
nice with a NULL map->hva, i.e. to do nothing if the map is invalid.

Note, vmx->nested.hv_evmcs_map is zero-allocated along with the rest of
vcpu_vmx, i.e. the map starts out invalid/NULL.

Tested-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-ID: <20241010182427.1434605-24-seanjc@google.com>

arch/x86/kvm/vmx/nested.c

index a8e7bc04d9bf365277332f0174b617da5747da45..e94a25373a596c6aaee86974d91dfd40426f3df2 100644 (file)
@@ -231,11 +231,8 @@ static inline void nested_release_evmcs(struct kvm_vcpu *vcpu)
        struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
        struct vcpu_vmx *vmx = to_vmx(vcpu);
 
-       if (nested_vmx_is_evmptr12_valid(vmx)) {
-               kvm_vcpu_unmap(vcpu, &vmx->nested.hv_evmcs_map, true);
-               vmx->nested.hv_evmcs = NULL;
-       }
-
+       kvm_vcpu_unmap(vcpu, &vmx->nested.hv_evmcs_map, true);
+       vmx->nested.hv_evmcs = NULL;
        vmx->nested.hv_evmcs_vmptr = EVMPTR_INVALID;
 
        if (hv_vcpu) {