Hi Marc-André,

On 1/2/20 10:01 PM, Marc-André Lureau wrote:
Check the host pointer is correctly aligned, otherwise we may fail
during migration in ram_block_discard_range().

Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
---
  migration/savevm.c | 5 +++++
  1 file changed, 5 insertions(+)

diff --git a/migration/savevm.c b/migration/savevm.c
index a71b930b91..ab6e02011f 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -2910,6 +2910,11 @@ err_drain:
void vmstate_register_ram(MemoryRegion *mr, DeviceState *dev)
  {
+    RAMBlock *rb = mr->ram_block;
+    uintptr_t hostaddr = (uintptr_t)qemu_ram_get_host_addr(rb);
+
+    assert((hostaddr & (qemu_ram_pagesize(rb) - 1)) == 0);

Can we use the QEMU_PTR_IS_ALIGNED() macro instead?

       assert(QEMU_PTR_IS_ALIGNED(qemu_ram_get_host_addr(rb),
                                  qemu_ram_pagesize(rb)));

      qemu_ram_set_idstr(mr->ram_block,
                         memory_region_name(mr), dev);
      qemu_ram_set_migratable(mr->ram_block);



Reply via email to