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);