diff options
Diffstat (limited to 'arch/x86/kvm/x86.c')
-rw-r--r-- | arch/x86/kvm/x86.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 99b738028fc0..813ebf1e55a0 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -3095,13 +3095,11 @@ static void write_protect_slot(struct kvm *kvm, | |||
3095 | 3095 | ||
3096 | /* Not many dirty pages compared to # of shadow pages. */ | 3096 | /* Not many dirty pages compared to # of shadow pages. */ |
3097 | if (nr_dirty_pages < kvm->arch.n_used_mmu_pages) { | 3097 | if (nr_dirty_pages < kvm->arch.n_used_mmu_pages) { |
3098 | unsigned long gfn_offset; | 3098 | gfn_t offset; |
3099 | 3099 | ||
3100 | for_each_set_bit(gfn_offset, dirty_bitmap, memslot->npages) { | 3100 | for_each_set_bit(offset, dirty_bitmap, memslot->npages) |
3101 | unsigned long gfn = memslot->base_gfn + gfn_offset; | 3101 | kvm_mmu_write_protect_pt_masked(kvm, memslot, offset, 1); |
3102 | 3102 | ||
3103 | kvm_mmu_rmap_write_protect(kvm, gfn, memslot); | ||
3104 | } | ||
3105 | kvm_flush_remote_tlbs(kvm); | 3103 | kvm_flush_remote_tlbs(kvm); |
3106 | } else | 3104 | } else |
3107 | kvm_mmu_slot_remove_write_access(kvm, memslot->id); | 3105 | kvm_mmu_slot_remove_write_access(kvm, memslot->id); |