summaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm/x86.c
diff options
context:
space:
mode:
authorAnton Arapov <anton@redhat.com>2012-05-15 10:24:02 +0200
committerAnton Arapov <anton@redhat.com>2012-05-15 10:24:02 +0200
commitfe2895d3d55146cac65b273c0f83e2c7e543cd0e (patch)
tree79e126e92ac8357191613fd166826bcb2cac0047 /arch/x86/kvm/x86.c
parentc0e33d8195b424eb29432998c565d09398933d32 (diff)
downloadkernel-uprobes-fe2895d3d55146cac65b273c0f83e2c7e543cd0e.tar.gz
kernel-uprobes-fe2895d3d55146cac65b273c0f83e2c7e543cd0e.tar.xz
kernel-uprobes-fe2895d3d55146cac65b273c0f83e2c7e543cd0e.zip
fedora kernel: be402e5a53d5ac42b5a17e0a207dae63a67f2786v3.3.6-1
Signed-off-by: Anton Arapov <anton@redhat.com>
Diffstat (limited to 'arch/x86/kvm/x86.c')
-rw-r--r--arch/x86/kvm/x86.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 7d3ac00fe50..8d1c6c6ecc9 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -2997,6 +2997,8 @@ static void write_protect_slot(struct kvm *kvm,
unsigned long *dirty_bitmap,
unsigned long nr_dirty_pages)
{
+ spin_lock(&kvm->mmu_lock);
+
/* Not many dirty pages compared to # of shadow pages. */
if (nr_dirty_pages < kvm->arch.n_used_mmu_pages) {
unsigned long gfn_offset;
@@ -3004,16 +3006,13 @@ static void write_protect_slot(struct kvm *kvm,
for_each_set_bit(gfn_offset, dirty_bitmap, memslot->npages) {
unsigned long gfn = memslot->base_gfn + gfn_offset;
- spin_lock(&kvm->mmu_lock);
kvm_mmu_rmap_write_protect(kvm, gfn, memslot);
- spin_unlock(&kvm->mmu_lock);
}
kvm_flush_remote_tlbs(kvm);
- } else {
- spin_lock(&kvm->mmu_lock);
+ } else
kvm_mmu_slot_remove_write_access(kvm, memslot->id);
- spin_unlock(&kvm->mmu_lock);
- }
+
+ spin_unlock(&kvm->mmu_lock);
}
/*