From f61ff065d37018433c21600c212c19dcec2ac784 Mon Sep 17 00:00:00 2001 From: Luigi Leonardi Date: Mon, 30 Mar 2026 14:43:07 +0200 Subject: [PATCH 1/3] igvm: switch to PRIx64 Use the PRIx64 format macro instead of %lX for uint64_t values. This is to improve portability as %lX is not necessarily 64 bit long. Signed-off-by: Luigi Leonardi Reviewed-by: Ani Sinha Message-ID: <20260330-igvm_fixes-v1-1-03587a5a808b@redhat.com> Signed-off-by: Gerd Hoffmann --- backends/igvm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backends/igvm.c b/backends/igvm.c index 3b5edf1521..50f0d6fb9a 100644 --- a/backends/igvm.c +++ b/backends/igvm.c @@ -187,7 +187,7 @@ static void *qigvm_prepare_memory(QIgvm *ctx, uint64_t addr, uint64_t size, error_setg( errp, "Processing of IGVM file failed: Could not prepare memory " - "at address 0x%lX due to existing non-RAM region", + "at address 0x%" PRIx64 " due to existing non-RAM region", addr); return NULL; } @@ -198,7 +198,7 @@ static void *qigvm_prepare_memory(QIgvm *ctx, uint64_t addr, uint64_t size, error_setg( errp, "Processing of IGVM file failed: Could not prepare memory " - "at address 0x%lX: region size exceeded", + "at address 0x%" PRIx64 ": region size exceeded", addr); return NULL; } From 5df493476f211690e5831346345e00a4ebc6f5d5 Mon Sep 17 00:00:00 2001 From: Luigi Leonardi Date: Mon, 30 Mar 2026 14:43:08 +0200 Subject: [PATCH 2/3] igvm: fix memory leak on failed memory region init When memory_region_init_* fail, `igvm_pages` is not freed causing a leak. Free `igvm_pages` in the error path. Fixes: c1d466d267cf ("backends/igvm: Add IGVM loader and configuration") Signed-off-by: Luigi Leonardi Message-ID: <20260330-igvm_fixes-v1-2-03587a5a808b@redhat.com> Signed-off-by: Gerd Hoffmann --- backends/igvm.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backends/igvm.c b/backends/igvm.c index 50f0d6fb9a..c347d0c17e 100644 --- a/backends/igvm.c +++ b/backends/igvm.c @@ -216,11 +216,13 @@ static void *qigvm_prepare_memory(QIgvm *ctx, uint64_t addr, uint64_t size, ctx->machine_state->cgs->require_guest_memfd) { if (!memory_region_init_ram_guest_memfd(igvm_pages, NULL, region_name, size, errp)) { + g_free(igvm_pages); return NULL; } } else { if (!memory_region_init_ram(igvm_pages, NULL, region_name, size, errp)) { + g_free(igvm_pages); return NULL; } } From 9b4edc3ecacf2f6ef3f2e7e3d423dfe9e67a781a Mon Sep 17 00:00:00 2001 From: Luigi Leonardi Date: Mon, 30 Mar 2026 14:43:09 +0200 Subject: [PATCH 3/3] igvm: fix parent object type in IgvmCfg struct IgvmCfg is defined as an Object but, currently, its first member is an ObjectClass. Replace ObjectClass with Object. Fixes: c1d466d267cf ("backends/igvm: Add IGVM loader and configuration") Signed-off-by: Luigi Leonardi Reviewed-by: Ani Sinha Message-ID: <20260330-igvm_fixes-v1-3-03587a5a808b@redhat.com> Signed-off-by: Gerd Hoffmann --- include/system/igvm-internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/system/igvm-internal.h b/include/system/igvm-internal.h index 76ae1bc3be..7f131c4d03 100644 --- a/include/system/igvm-internal.h +++ b/include/system/igvm-internal.h @@ -19,7 +19,7 @@ #include struct IgvmCfg { - ObjectClass parent_class; + Object parent_obj; /* * filename: Filename that specifies a file that contains the configuration