kvm: fix alignment of ram address
authorDavid Hildenbrand <david@redhat.com>
Mon, 16 Oct 2017 14:42:57 +0000 (16:42 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 18 Oct 2017 08:14:35 +0000 (10:14 +0200)
Fix the wrong calculation of the delta, used to align the ram address.

This only strikes if alignment has to be done.

Reported-by: Joe Clifford <joeclifford@gmail.com>
Fixes: 5ea69c2e3614 ("kvm: factor out alignment of memory section")
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20171016144302.24284-3-david@redhat.com>
Tested-by: Joe Clifford <joeclifford@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
accel/kvm/kvm-all.c

index 90c88b517ddab393906aebb127277b5c03ef6304..fae1eca983c8fcf337d8f8e88d869ecf4201b054 100644 (file)
@@ -717,8 +717,9 @@ static void kvm_set_phys_mem(KVMMemoryListener *kml,
         return;
     }
 
+    /* use aligned delta to align the ram address */
     ram = memory_region_get_ram_ptr(mr) + section->offset_within_region +
-          (section->offset_within_address_space - start_addr);
+          (start_addr - section->offset_within_address_space);
 
     mem = kvm_lookup_matching_slot(kml, start_addr, size);
     if (!add) {