From: Avi Kivity Date: Fri, 22 Aug 2008 16:19:38 +0000 (+0300) Subject: KVM: MMU: Fix torn shadow pte X-Git-Tag: Ubuntu-5.2.0-15.16~33418^2~1 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=cd5998ebfbc9e6cb44408efa217c15d7eea13675;p=mirror_ubuntu-eoan-kernel.git KVM: MMU: Fix torn shadow pte The shadow code assigns a pte directly in one place, which is nonatomic on i386 can can cause random memory references. Fix by using an atomic setter. Signed-off-by: Avi Kivity --- diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h index f72ac1fa35f0..4a814bff21f2 100644 --- a/arch/x86/kvm/paging_tmpl.h +++ b/arch/x86/kvm/paging_tmpl.h @@ -345,7 +345,7 @@ static u64 *FNAME(fetch)(struct kvm_vcpu *vcpu, gva_t addr, shadow_addr = __pa(shadow_page->spt); shadow_pte = shadow_addr | PT_PRESENT_MASK | PT_ACCESSED_MASK | PT_WRITABLE_MASK | PT_USER_MASK; - *shadow_ent = shadow_pte; + set_shadow_pte(shadow_ent, shadow_pte); } mmu_set_spte(vcpu, shadow_ent, access, walker->pte_access & access,