• Sean Christopherson's avatar
    KVM: VMX: Use current VMCS to query WAITPKG support for MSR emulation · 7b9cae02
    Sean Christopherson authored
    Use the secondary_exec_controls_get() accessor in vmx_has_waitpkg() to
    effectively get the controls for the current VMCS, as opposed to using
    vmx->secondary_exec_controls, which is the cached value of KVM's desired
    controls for vmcs01 and truly not reflective of any particular VMCS.
    
    While the waitpkg control is not dynamic, i.e. vmcs01 will always hold
    the same waitpkg configuration as vmx->secondary_exec_controls, the same
    does not hold true for vmcs02 if the L1 VMM hides the feature from L2.
    If L1 hides the feature _and_ does not intercept MSR_IA32_UMWAIT_CONTROL,
    L2 could incorrectly read/write L1's virtual MSR instead of taking a #GP.
    
    Fixes: 6e3ba4ab ("KVM: vmx: Emulate MSR IA32_UMWAIT_CONTROL")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20210810171952.2758100-2-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    7b9cae02
vmx.h 15.4 KB