From a500db4b868fc8254be5e7cc7227169f1c3ae2c1 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 31 Jul 2007 19:57:47 +1000 Subject: [PATCH] --- yaml --- r: 68376 b: refs/heads/master c: 39214915f50f6ac2350355f2db63910d968fa790 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/kvm/kvm_main.c | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index bceeba4ba972..39eda750aa47 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b114b0804df7131cb6764b948c1c530c834fa3c0 +refs/heads/master: 39214915f50f6ac2350355f2db63910d968fa790 diff --git a/trunk/drivers/kvm/kvm_main.c b/trunk/drivers/kvm/kvm_main.c index bfb1b6de0584..5dee3024579d 100644 --- a/trunk/drivers/kvm/kvm_main.c +++ b/trunk/drivers/kvm/kvm_main.c @@ -803,11 +803,14 @@ static int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, if (copy_to_user(log->dirty_bitmap, memslot->dirty_bitmap, n)) goto out; - mutex_lock(&kvm->lock); - kvm_mmu_slot_remove_write_access(kvm, log->slot); - kvm_flush_remote_tlbs(kvm); - memset(memslot->dirty_bitmap, 0, n); - mutex_unlock(&kvm->lock); + /* If nothing is dirty, don't bother messing with page tables. */ + if (any) { + mutex_lock(&kvm->lock); + kvm_mmu_slot_remove_write_access(kvm, log->slot); + kvm_flush_remote_tlbs(kvm); + memset(memslot->dirty_bitmap, 0, n); + mutex_unlock(&kvm->lock); + } r = 0;