]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
nodeCapsInitNUMA: Avoid @cpumap leak
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 20 Aug 2014 13:59:25 +0000 (15:59 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 20 Aug 2014 14:15:00 +0000 (16:15 +0200)
In case the host has 2 or more NUMA nodes, we fetch CPU map for each
node. However, we need to free the CPU map in between loops:

==29513== 96 (72 direct, 24 indirect) bytes in 3 blocks are definitely lost in loss record 951 of 1,264
==29513==    at 0x4C2A700: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==29513==    by 0x52AD24B: virAlloc (viralloc.c:144)
==29513==    by 0x52AF0E6: virBitmapNew (virbitmap.c:78)
==29513==    by 0x52FB720: virNumaGetNodeCPUs (virnuma.c:294)
==29513==    by 0x53C700B: nodeCapsInitNUMA (nodeinfo.c:1886)
==29513==    by 0x11759708: vboxCapsInit (vbox_common.c:398)
==29513==    by 0x11759CC4: vboxConnectOpen (vbox_common.c:514)
==29513==    by 0x53C965F: do_open (libvirt.c:1147)
==29513==    by 0x53C9EBC: virConnectOpen (libvirt.c:1317)
==29513==    by 0x142905: remoteDispatchConnectOpen (remote.c:1215)
==29513==    by 0x126ADF: remoteDispatchConnectOpenHelper (remote_dispatch.h:2346)
==29513==    by 0x5453D21: virNetServerProgramDispatchCall (virnetserverprogram.c:437)

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/nodeinfo.c
src/util/virnuma.c

index 2c1c4379bbf34d32094645bbcff5b9e1bc2de47a..92a371866e1392457f453111e181e41db3585731 100644 (file)
@@ -1926,6 +1926,8 @@ nodeCapsInitNUMA(virCapsPtr caps)
         cpus = NULL;
         siblings = NULL;
         pageinfo = NULL;
+        virBitmapFree(cpumap);
+        cpumap = NULL;
     }
 
     ret = 0;
index 9e6e5f7a6c2e5181fa9d98e7d01bb50cf1d061e3..1a3439807ed6705df4953f278517e9ea99ddabb7 100644 (file)
@@ -308,7 +308,7 @@ virNumaGetNodeCPUs(int node,
  cleanup:
     VIR_FREE(mask);
     VIR_FREE(allonesmask);
-    VIR_FREE(cpumap);
+    virBitmapFree(cpumap);
 
     return ret;
 }