mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
KVM: x86: Reinitialize context if host userspace toggles EFER.LME
commitd617429936upstream. While the guest runs, EFER.LME cannot change unless CR0.PG is clear, and therefore EFER.NX is the only bit that can affect the MMU role. However, set_efer accepts a host-initiated change to EFER.LME even with CR0.PG=1. In that case, the MMU has to be reset. Fixes:11988499e6("KVM: x86: Skip EFER vs. guest CPUID checks for host-initiated writes") Cc: stable@vger.kernel.org Reviewed-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
273ad0cf56
commit
48306afcac
@@ -49,6 +49,7 @@
|
||||
X86_CR4_LA57)
|
||||
|
||||
#define KVM_MMU_CR0_ROLE_BITS (X86_CR0_PG | X86_CR0_WP)
|
||||
#define KVM_MMU_EFER_ROLE_BITS (EFER_LME | EFER_NX)
|
||||
|
||||
static __always_inline u64 rsvd_bits(int s, int e)
|
||||
{
|
||||
|
||||
@@ -1605,8 +1605,7 @@ static int set_efer(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
|
||||
return r;
|
||||
}
|
||||
|
||||
/* Update reserved bits */
|
||||
if ((efer ^ old_efer) & EFER_NX)
|
||||
if ((efer ^ old_efer) & KVM_MMU_EFER_ROLE_BITS)
|
||||
kvm_mmu_reset_context(vcpu);
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user