Patchwork kvm: Don't walk memory_size == 0 slots in kvm_client_migration_log

login
register
mail settings
Submitter Alex Williamson
Date July 14, 2010, 7:36 p.m.
Message ID <20100714193606.7124.80638.stgit@localhost6.localdomain6>
Download mbox | patch
Permalink /patch/58924/
State New
Headers show

Comments

Alex Williamson - July 14, 2010, 7:36 p.m.
If we've unregistered a memory area, we should avoid calling
qemu_get_ram_ptr() on the left over phys_offset cruft in the
slot array.  Now that we support removing ramblocks, the
phys_offset ram_addr_t can go away and cause a lookup fault
and abort.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
---

 kvm-all.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
Marcelo Tosatti - July 16, 2010, 1:12 a.m.
On Wed, Jul 14, 2010 at 01:36:49PM -0600, Alex Williamson wrote:
> If we've unregistered a memory area, we should avoid calling
> qemu_get_ram_ptr() on the left over phys_offset cruft in the
> slot array.  Now that we support removing ramblocks, the
> phys_offset ram_addr_t can go away and cause a lookup fault
> and abort.
> 
> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>

Applied to uq/master branch, thanks.

Patch

diff --git a/kvm-all.c b/kvm-all.c
index fec6d05..2922292 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -282,6 +282,9 @@  static int kvm_set_migration_log(int enable)
     for (i = 0; i < ARRAY_SIZE(s->slots); i++) {
         mem = &s->slots[i];
 
+        if (!mem->memory_size) {
+            continue;
+        }
         if (!!(mem->flags & KVM_MEM_LOG_DIRTY_PAGES) == enable) {
             continue;
         }