diff --git a/kvm-hostmem-Apply-merge-property-after-the-memory-region.patch b/kvm-hostmem-Apply-merge-property-after-the-memory-region.patch new file mode 100644 index 0000000..1f6c8ed --- /dev/null +++ b/kvm-hostmem-Apply-merge-property-after-the-memory-region.patch @@ -0,0 +1,61 @@ +From d0163127a47250170e01e39f48250a2725f531c0 Mon Sep 17 00:00:00 2001 +From: Gavin Shan +Date: Tue, 1 Oct 2024 16:58:57 +1000 +Subject: [PATCH] hostmem: Apply merge property after the memory region is + initialized + +RH-Author: Gavin Shan +RH-MergeRequest: 272: hostmem: Apply merge property after the memory region is initialized +RH-Jira: RHEL-58936 +RH-Acked-by: Cornelia Huck +RH-Acked-by: Eric Auger +RH-Acked-by: David Hildenbrand +RH-Commit: [1/1] aa47bedf64698b277bb8835f4689d4f1d5eca53c (gwshan/qemu-centos) + +JIRA: https://issues.redhat.com/browse/RHEL-58936 + +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 +Tested-by: Zhenyu Zhang +Signed-off-by: Gavin Shan +Signed-off-by: David Hildenbrand +(cherry picked from commit 78c8f780d3f0d6d17aa93d6f99ff72960080fdd7) +Signed-off-by: Gavin Shan +--- + backends/hostmem.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/backends/hostmem.c b/backends/hostmem.c +index 4e5576a4ad..181446626a 100644 +--- a/backends/hostmem.c ++++ b/backends/hostmem.c +@@ -178,7 +178,7 @@ static void host_memory_backend_set_merge(Object *obj, bool value, Error **errp) + return; + } + +- if (!host_memory_backend_mr_inited(backend) && ++ if (host_memory_backend_mr_inited(backend) && + value != backend->merge) { + void *ptr = memory_region_get_ram_ptr(&backend->mr); + uint64_t sz = memory_region_size(&backend->mr); +-- +2.39.3 + diff --git a/qemu-kvm.spec b/qemu-kvm.spec index aa38ee7..b8508b2 100644 --- a/qemu-kvm.spec +++ b/qemu-kvm.spec @@ -143,7 +143,7 @@ Obsoletes: %{name}-block-ssh <= %{epoch}:%{version} \ Summary: QEMU is a machine emulator and virtualizer Name: qemu-kvm Version: 9.1.0 -Release: 2%{?rcrel}%{?dist}%{?cc_suffix} +Release: 3%{?rcrel}%{?dist}%{?cc_suffix} # Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped # Epoch 15 used for RHEL 8 # Epoch 17 used for RHEL 9 (due to release versioning offset in RHEL 8.5) @@ -235,6 +235,8 @@ Patch32: kvm-remove-stale-compat-definitions.patch Patch33: kvm-RH-Author-Shaoqin-Huang-shahuang-redhat.com.patch # For RHEL-57028 - fsfreeze hooks break on the systems first restorecon [rhel-10] Patch34: kvm-qemu-guest-agent-Update-the-logfile-path-of-qga-fsfr.patch +# For RHEL-58936 - [RHEL-10.0] QEMU core dump on applying merge property to memory backend +Patch35: kvm-hostmem-Apply-merge-property-after-the-memory-region.patch %if %{have_clang} BuildRequires: clang @@ -1302,6 +1304,11 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %endif %changelog +* Mon Oct 07 2024 Miroslav Rezanina - 9.1.0-3 +- kvm-hostmem-Apply-merge-property-after-the-memory-region.patch [RHEL-58936] +- Resolves: RHEL-58936 + ([RHEL-10.0] QEMU core dump on applying merge property to memory backend) + * Mon Sep 30 2024 Miroslav Rezanina - 9.1.0-2 - kvm-x86-create-new-pc-q35-machine-type-for-rhel-9.6.patch [RHEL-29002 RHEL-29003 RHEL-35587 RHEL-38411 RHEL-45141] - kvm-arm-create-new-virt-machine-type-for-rhel-9.6.patch [RHEL-29002 RHEL-29003 RHEL-35587 RHEL-38411 RHEL-45141]