summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorXiao Guangrong2010-11-19 10:01:40 +0100
committerAvi Kivity2011-01-12 10:29:43 +0100
commit30bfb3c4256422221cc763ff6e749ce8aca8e5c9 (patch)
treed3816bef1c74ce4d1acd6d80c634d50f7e60e644 /arch
parentKVM: PPC: Fix compile warning (diff)
downloadkernel-qcow2-linux-30bfb3c4256422221cc763ff6e749ce8aca8e5c9.tar.gz
kernel-qcow2-linux-30bfb3c4256422221cc763ff6e749ce8aca8e5c9.tar.xz
kernel-qcow2-linux-30bfb3c4256422221cc763ff6e749ce8aca8e5c9.zip
KVM: MMU: fix forgot flush tlbs on sync_page path
We should flush all tlbs after drop spte on sync_page path since Quote from Avi: | sync_page | drop_spte | kvm_mmu_notifier_invalidate_page | kvm_unmap_rmapp | spte doesn't exist -> no flush | page is freed | guest can write into freed page? KVM-Stable-Tag. Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kvm/paging_tmpl.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
index 590bf1223cb4..ca0e5e834724 100644
--- a/arch/x86/kvm/paging_tmpl.h
+++ b/arch/x86/kvm/paging_tmpl.h
@@ -786,6 +786,7 @@ static int FNAME(sync_page)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp,
else
nonpresent = shadow_notrap_nonpresent_pte;
drop_spte(vcpu->kvm, &sp->spt[i], nonpresent);
+ kvm_flush_remote_tlbs(vcpu->kvm);
continue;
}