]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuBuildNumaArgStr: Simplify @nodeBackends
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 6 Jun 2018 11:00:17 +0000 (13:00 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 6 Jun 2018 11:54:39 +0000 (13:54 +0200)
Instead of array of pointers to individual buffers it can be
array of buffers directly. This also fixes the following memleak:

==22516== 96 bytes in 4 blocks are definitely lost in loss record 166 of 195
==22516==    at 0x4C2EF26: calloc (vg_replace_malloc.c:711)
==22516==    by 0x5D2C7D5: virAlloc (viralloc.c:144)
==22516==    by 0x56FAABD: qemuBuildNumaArgStr (qemu_command.c:7543)
==22516==    by 0x5701835: qemuBuildCommandLine (qemu_command.c:10112)
==22516==    by 0x575D794: qemuProcessCreatePretendCmd (qemu_process.c:6568)
==22516==    by 0x113338: testCompareXMLToArgv (qemuxml2argvtest.c:549)
==22516==    by 0x138CA3: virTestRun (testutils.c:180)
==22516==    by 0x136CD1: mymain (qemuxml2argvtest.c:2825)
==22516==    by 0x13AD58: virTestMain (testutils.c:1118)
==22516==    by 0x137351: main (qemuxml2argvtest.c:2874)

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_command.c

index e85c5ef80412ac9100e7e377cbd143de6a0a7145..1324c672ba6d49cecacfa0fb8480479d1c7c7bf5 100644 (file)
@@ -7478,7 +7478,7 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg,
     virQEMUCapsPtr qemuCaps = priv->qemuCaps;
     virBuffer buf = VIR_BUFFER_INITIALIZER;
     char *cpumask = NULL, *tmpmask = NULL, *next = NULL;
-    virBufferPtr *nodeBackends = NULL;
+    virBufferPtr nodeBackends = NULL;
     bool needBackend = false;
     int rc;
     int ret = -1;
@@ -7540,11 +7540,8 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg,
         if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_RAM) ||
             virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE)) {
 
-            if (VIR_ALLOC(nodeBackends[i]) < 0)
-                goto cleanup;
-
             if ((rc = qemuBuildMemoryCellBackendStr(def, cfg, i, priv,
-                                                    nodeBackends[i])) < 0)
+                                                    &nodeBackends[i])) < 0)
                 goto cleanup;
 
             if (rc == 0)
@@ -7578,7 +7575,7 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg,
 
         if (needBackend) {
             virCommandAddArg(cmd, "-object");
-            virCommandAddArgBuffer(cmd, nodeBackends[i]);
+            virCommandAddArgBuffer(cmd, &nodeBackends[i]);
         }
 
         virCommandAddArg(cmd, "-numa");
@@ -7642,7 +7639,7 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg,
 
     if (nodeBackends) {
         for (i = 0; i < ncells; i++)
-            virBufferFreeAndReset(nodeBackends[i]);
+            virBufferFreeAndReset(&nodeBackends[i]);
 
         VIR_FREE(nodeBackends);
     }