summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2015-04-27 14:51:31 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2015-06-05 17:09:59 +0200
commitea8cb1a8d98f5e3822a23a7cecdb4add0f29178b (patch)
treeb70a1eb90cccc738000dd117e5d7d168fc4c6fa1
parent677e7805cf95f3b2bca8baf0888d1ebed7f0c606 (diff)
downloadhqemu-ea8cb1a8d98f5e3822a23a7cecdb4add0f29178b.zip
hqemu-ea8cb1a8d98f5e3822a23a7cecdb4add0f29178b.tar.gz
kvm: accept non-mapped memory in kvm_dirty_pages_log_change
It is okay if memory is not mapped into the guest but has dirty logging enabled. When this happens, KVM will not do anything and only accesses from the host will be logged. This can be triggered by iofuzz. Reviewed-by: Fam Zheng <famz@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--kvm-all.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/kvm-all.c b/kvm-all.c
index c713b22..36e8109 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -335,12 +335,10 @@ static int kvm_dirty_pages_log_change(hwaddr phys_addr,
KVMSlot *mem = kvm_lookup_matching_slot(s, phys_addr, phys_addr + size);
if (mem == NULL) {
- fprintf(stderr, "BUG: %s: invalid parameters " TARGET_FMT_plx "-"
- TARGET_FMT_plx "\n", __func__, phys_addr,
- (hwaddr)(phys_addr + size - 1));
- return -EINVAL;
+ return 0;
+ } else {
+ return kvm_slot_dirty_pages_log_change(mem, log_dirty);
}
- return kvm_slot_dirty_pages_log_change(mem, log_dirty);
}
static void kvm_log_start(MemoryListener *listener,
OpenPOWER on IntegriCloud