[libvirt PATCH 0/1] qemu: Fix memory leaks in firmware selection code

Reported when building with gcc and clang both. ==10909==ERROR: LeakSanitizer: detected memory leaks Direct leak of 128 byte(s) in 4 object(s) allocated from: #0 0x7f191d4a2808 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cc:144 #1 0x7f191987ae98 in g_malloc (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x57e98) SUMMARY: AddressSanitizer: 128 byte(s) leaked in 4 allocation(s). This patch is a requirement for pushing my recent improvements to firmware selection[1] without further degrading the CI pipeline. [1] https://listman.redhat.com/archives/libvir-list/2023-March/238890.html Andrea Bolognani (1): qemu: Fix memory leaks in firmware selection code src/qemu/qemu_firmware.c | 4 ++++ 1 file changed, 4 insertions(+) -- 2.39.2

Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_firmware.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 9de4166772..b0f7ae5893 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1296,6 +1296,8 @@ qemuFirmwareEnableFeaturesModern(virQEMUDriverConfig *cfg, loader = def->os.loader; loader->type = VIR_DOMAIN_LOADER_TYPE_ROM; + + VIR_FREE(loader->path); loader->path = g_strdup(memory->filename); VIR_DEBUG("decided on loader '%s'", @@ -1474,6 +1476,8 @@ qemuFirmwareFillDomainLegacy(virQEMUDriver *driver, loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH; loader->readonly = VIR_TRISTATE_BOOL_YES; + + VIR_FREE(loader->nvramTemplate); loader->nvramTemplate = g_strdup(cfg->firmwares[i]->nvram); qemuFirmwareEnsureNVRAM(def, cfg, VIR_STORAGE_FILE_RAW); -- 2.39.2

On 3/21/23 8:15 PM, Andrea Bolognani wrote:
Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_firmware.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 9de4166772..b0f7ae5893 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1296,6 +1296,8 @@ qemuFirmwareEnableFeaturesModern(virQEMUDriverConfig *cfg, loader = def->os.loader;
loader->type = VIR_DOMAIN_LOADER_TYPE_ROM; + + VIR_FREE(loader->path); loader->path = g_strdup(memory->filename);
VIR_DEBUG("decided on loader '%s'", @@ -1474,6 +1476,8 @@ qemuFirmwareFillDomainLegacy(virQEMUDriver *driver,
loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH; loader->readonly = VIR_TRISTATE_BOOL_YES; + + VIR_FREE(loader->nvramTemplate); loader->nvramTemplate = g_strdup(cfg->firmwares[i]->nvram);
qemuFirmwareEnsureNVRAM(def, cfg, VIR_STORAGE_FILE_RAW);
Reviewed-by: Laine Stump <laine@redhat.com>
participants (2)
-
Andrea Bolognani
-
Laine Stump