diff options
author | Anton Arapov <anton@redhat.com> | 2012-05-15 10:24:02 +0200 |
---|---|---|
committer | Anton Arapov <anton@redhat.com> | 2012-05-15 10:24:02 +0200 |
commit | fe2895d3d55146cac65b273c0f83e2c7e543cd0e (patch) | |
tree | 79e126e92ac8357191613fd166826bcb2cac0047 /arch/x86/kvm/x86.c | |
parent | c0e33d8195b424eb29432998c565d09398933d32 (diff) | |
download | kernel-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.c | 11 |
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); } /* |