hostmem: Apply merge property after the memory region is initialized
authorGavin Shan <gshan@redhat.com>
Sun, 15 Sep 2024 23:31:17 +0000 (09:31 +1000)
committerDavid Hildenbrand <david@redhat.com>
Tue, 24 Sep 2024 09:33:35 +0000 (11:33 +0200)
commit78c8f780d3f0d6d17aa93d6f99ff72960080fdd7
treeb9c2aedd044572b43251061a3d19c38aaa9222c4
parent1f5f49056d0f140568805d66f33396ed5cd90369
hostmem: Apply merge property after the memory region is initialized

The semantic change has been introduced by commit 5becdc0ab0 ("hostmem:
simplify the code for merge and dump properties") even it clarifies that
no senmatic change has been introduced. After the commit, the merge
property can be applied even the corresponding memory region isn't
initialized yet. This leads to crash dump by the following command
lines.

  # /home/gavin/sandbox/qemu.main/build/qemu-system-aarch64  \
    -accel kvm  -machine virt -cpu host                      \
    -object memory-backend-ram,id=mem-memN0,size=4096M,merge=off
    :
    qemu-system-aarch64: ../system/memory.c:2419: memory_region_get_ram_ptr: \
    Assertion `mr->ram_block' failed.

Fix it by applying the merge property only when the memory region is
initialized.

Message-ID: <20240915233117.478169-1-gshan@redhat.com>
Fixes: 5becdc0ab083 ("hostmem: simplify the code for merge and dump properties")
Reported-by: Zhenyu Zhang <zhenyzha@redhat.com>
Tested-by: Zhenyu Zhang <zhenyzha@redhat.com>
Signed-off-by: Gavin Shan <gshan@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
backends/hostmem.c