After v8.0.0-466-g08101bde5d we unconditionally regenerate per
domain NVRAM path even though it might have been parsed earlier
from domain XML. The way we do that leads to a memleak:
43 bytes in 1 blocks are definitely lost in loss record 330 of 682
at 0x483F7E5: malloc (vg_replace_malloc.c:381)
by 0x50D5B18: g_malloc (in /usr/lib64/libglib-2.0.so.0.7000.2)
by 0x50EFA4F: g_strdup (in /usr/lib64/libglib-2.0.so.0.7000.2)
by 0x49E774E: virXPathString (virxml.c:88)
by 0x4A3F0E4: virDomainDefParseBootLoaderOptions (domain_conf.c:18226)
by 0x4A3F49C: virDomainDefParseBootOptions (domain_conf.c:18298)
by 0x4A448C3: virDomainDefParseXML (domain_conf.c:19598)
by 0x4A487A1: virDomainDefParseNode (domain_conf.c:20404)
by 0x117FCF: testCompareXMLToArgv (qemuxml2argvtest.c:726)
by 0x142124: virTestRun (testutils.c:142)
by 0x1423D4: virTestRunLog (testutils.c:197)
by 0x140A76: mymain (qemuxml2argvtest.c:3406)
If we parsed NVRAM path from domain XML we must refrain from
generating new path.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
---
src/qemu/qemu_firmware.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c
index 4b02cb2802..59dc76fec4 100644
--- a/src/qemu/qemu_firmware.c
+++ b/src/qemu/qemu_firmware.c
@@ -1139,7 +1139,8 @@ qemuFirmwareEnableFeatures(virQEMUDriver *driver,
VIR_FREE(def->os.loader->nvramTemplate);
def->os.loader->nvramTemplate = g_strdup(flash->nvram_template.filename);
- qemuDomainNVRAMPathFormat(cfg, def, &def->os.loader->nvram);
+ if (!def->os.loader->nvram)
+ qemuDomainNVRAMPathFormat(cfg, def, &def->os.loader->nvram);
VIR_DEBUG("decided on firmware '%s' template '%s' NVRAM '%s'",
def->os.loader->path,
--
2.34.1
On Wed, Feb 23, 2022 at 10:16:57 +0100, Michal Privoznik wrote: > After v8.0.0-466-g08101bde5d we unconditionally regenerate per > domain NVRAM path even though it might have been parsed earlier > from domain XML. The way we do that leads to a memleak: > > 43 bytes in 1 blocks are definitely lost in loss record 330 of 682 > at 0x483F7E5: malloc (vg_replace_malloc.c:381) > by 0x50D5B18: g_malloc (in /usr/lib64/libglib-2.0.so.0.7000.2) > by 0x50EFA4F: g_strdup (in /usr/lib64/libglib-2.0.so.0.7000.2) > by 0x49E774E: virXPathString (virxml.c:88) > by 0x4A3F0E4: virDomainDefParseBootLoaderOptions (domain_conf.c:18226) > by 0x4A3F49C: virDomainDefParseBootOptions (domain_conf.c:18298) > by 0x4A448C3: virDomainDefParseXML (domain_conf.c:19598) > by 0x4A487A1: virDomainDefParseNode (domain_conf.c:20404) > by 0x117FCF: testCompareXMLToArgv (qemuxml2argvtest.c:726) > by 0x142124: virTestRun (testutils.c:142) > by 0x1423D4: virTestRunLog (testutils.c:197) > by 0x140A76: mymain (qemuxml2argvtest.c:3406) > > If we parsed NVRAM path from domain XML we must refrain from > generating new path. > > Signed-off-by: Michal Privoznik <mprivozn@redhat.com> > --- > src/qemu/qemu_firmware.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) Reviewed-by: Peter Krempa <pkrempa@redhat.com>
© 2016 - 2024 Red Hat, Inc.