]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: VMX: Initialize vmcs01.VM_EXIT_MSR_STORE_ADDR with list address
authorSean Christopherson <seanjc@google.com>
Sat, 6 Dec 2025 00:17:19 +0000 (16:17 -0800)
committerSean Christopherson <seanjc@google.com>
Thu, 8 Jan 2026 19:52:22 +0000 (11:52 -0800)
Initialize vmcs01.VM_EXIT_MSR_STORE_ADDR to point at the vCPU's
msr_autostore list in anticipation of utilizing the auto-store
functionality, and to harden KVM against stray reads to pfn 0 (or, in
theory, a random pfn if the underlying CPU uses a complex scheme for
encoding VMCS data).  The MSR auto lists are supposed to be ignored if the
associated COUNT VMCS field is '0', but leaving the ADDR field
zero-initialized in memory is an unnecessary risk (albeit a minuscule risk)
given that the cost is a single VMWRITE during vCPU creation.

Tested-by: Manali Shukla <manali.shukla@amd.com>
Link: https://patch.msgid.link/20251206001720.468579-44-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/vmx/vmx.c

index 3f64d4b1b19c529073b5e2ac489ec2b85060a84c..6a17cb90eaf4c930359d7673f2a47b7e12dca268 100644 (file)
@@ -4933,6 +4933,7 @@ static void init_vmcs(struct vcpu_vmx *vmx)
                vmcs_write64(VM_FUNCTION_CONTROL, 0);
 
        vmcs_write32(VM_EXIT_MSR_STORE_COUNT, 0);
+       vmcs_write64(VM_EXIT_MSR_STORE_ADDR, __pa(vmx->msr_autostore.val));
        vmcs_write32(VM_EXIT_MSR_LOAD_COUNT, 0);
        vmcs_write64(VM_EXIT_MSR_LOAD_ADDR, __pa(vmx->msr_autoload.host.val));
        vmcs_write32(VM_ENTRY_MSR_LOAD_COUNT, 0);