KVM: MMU: flush remote tlbs when overwriting spte with different pfn
authorXiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Wed, 30 Jun 2010 08:04:06 +0000 (16:04 +0800)
committerMarcelo Tosatti <mtosatti@redhat.com>
Mon, 12 Jul 2010 17:05:56 +0000 (14:05 -0300)
After remove a rmap, we should flush all vcpu's tlb

Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/kvm/mmu.c

index a6f695d76928675008a99f2030b00299856840c4..3699613e88304d81cb4774c5ee69e1e4464d8a1f 100644 (file)
@@ -1879,6 +1879,8 @@ static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 *sptep,
                        pgprintk("hfn old %lx new %lx\n",
                                 spte_to_pfn(*sptep), pfn);
                        rmap_remove(vcpu->kvm, sptep);
+                       __set_spte(sptep, shadow_trap_nonpresent_pte);
+                       kvm_flush_remote_tlbs(vcpu->kvm);
                } else
                        was_rmapped = 1;
        }