File 24adb6c7-qemu-dont-regen-nvram-path.patch of Package libvirt.29155

commit 24adb6c7a6cbd8ce5f9de67e6af5d89e0e57c270
Author: Michal Prívozník <mprivozn@redhat.com>
Date:   Wed Feb 23 08:50:44 2022 +0100

    qemu: Don't regenerate NVRAM path if parsed from domain XML
    
    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>
    Reviewed-by: Peter Krempa <pkrempa@redhat.com>

Index: libvirt-8.0.0/src/qemu/qemu_firmware.c
===================================================================
--- libvirt-8.0.0.orig/src/qemu/qemu_firmware.c
+++ libvirt-8.0.0/src/qemu/qemu_firmware.c
@@ -1122,7 +1122,8 @@ qemuFirmwareEnableFeatures(virQEMUDriver
         VIR_FREE(def->os.loader->templt);
         def->os.loader->templt = 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,
openSUSE Build Service is sponsored by