Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: MMU: fix CR4.SMEP=1, CR0.WP=0 with shadow pages

smep_andnot_wp is initialized in kvm_init_shadow_mmu and shadow pages
should not be reused for different values of it. Thus, it has to be
added to the mask in kvm_mmu_pte_write.

Reviewed-by: Xiao Guangrong <guangrong.xiao@linux.intel.com>
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

+1 -1
+1 -1
arch/x86/kvm/mmu.c
··· 4238 4238 ++vcpu->kvm->stat.mmu_pte_write; 4239 4239 kvm_mmu_audit(vcpu, AUDIT_PRE_PTE_WRITE); 4240 4240 4241 - mask.cr0_wp = mask.cr4_pae = mask.nxe = 1; 4241 + mask.cr0_wp = mask.cr4_pae = mask.nxe = mask.smep_andnot_wp = 1; 4242 4242 for_each_gfn_indirect_valid_sp(vcpu->kvm, sp, gfn) { 4243 4243 if (detect_write_misaligned(sp, gpa, bytes) || 4244 4244 detect_write_flooding(sp)) {