From: Michal Privoznik Date: Thu, 25 Sep 2014 09:18:50 +0000 (+0200) Subject: remoteNodeGetFreePages: Don't alloc args.pages.pages_val X-Git-Tag: v1.2.9-rc2~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f2729283107dc749037453e30b6e21ef3af8d468;p=thirdparty%2Flibvirt.git remoteNodeGetFreePages: Don't alloc args.pages.pages_val There's no one to free() it anyway. Instead, we can just pass the provided array pointer directly. ==20039== 48 bytes in 4 blocks are definitely lost in loss record 658 of 787 ==20039== at 0x4C2A700: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==20039== by 0x4EA661F: virAllocN (viralloc.c:191) ==20039== by 0x50386EF: remoteNodeGetFreePages (remote_driver.c:7625) ==20039== by 0x5003504: virNodeGetFreePages (libvirt.c:21379) ==20039== by 0x154625: cmdFreepages (virsh-host.c:374) ==20039== by 0x12F718: vshCommandRun (virsh.c:1935) ==20039== by 0x1339FB: main (virsh.c:3747) Signed-off-by: Michal Privoznik --- diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index dc2d2fb64c..6c49e49c17 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -7622,9 +7622,7 @@ remoteNodeGetFreePages(virConnectPtr conn, goto done; } - if (VIR_ALLOC_N(args.pages.pages_val, npages) < 0) - goto done; - memcpy(args.pages.pages_val, pages, npages * sizeof(*pages)); + args.pages.pages_val = (u_int *) pages; args.pages.pages_len = npages; args.startCell = startCell; args.cellCount = cellCount;