From 18b6323ab9e4deede09799e9f964a355d64f3cf0 Mon Sep 17 00:00:00 2001 From: Stefan Berger Date: Thu, 12 Aug 2010 16:30:11 -0400 Subject: [PATCH] Fix valgrind complaints when using kill -SIGHUP on libvirtd This patch fixes a couple of complaints from valgrind when tickling libvirtd with SIGHUP. The first two files contain fixes for memory leaks. The 3rd one initializes an uninitialized variable. The 4th one is another memory leak. --- src/conf/nwfilter_conf.c | 1 + src/conf/storage_conf.c | 2 ++ src/cpu/cpu_x86.c | 6 ++++++ src/util/util.c | 2 ++ 4 files changed, 11 insertions(+) diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index fd3d805077..2ac18511e9 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -2239,6 +2239,7 @@ virNWFilterPoolObjLoad(virConnectPtr conn, return NULL; } + VIR_FREE(pool->configFile); // for driver reload pool->configFile = strdup(path); if (pool->configFile == NULL) { virReportOOMError(); diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index bf86c9342f..18a6472512 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -1403,12 +1403,14 @@ virStoragePoolObjLoad(virStoragePoolObjListPtr pools, return NULL; } + VIR_FREE(pool->configFile); // for driver reload pool->configFile = strdup(path); if (pool->configFile == NULL) { virReportOOMError(); virStoragePoolDefFree(def); return NULL; } + VIR_FREE(pool->autostartLink); // for driver reload pool->autostartLink = strdup(autostartLink); if (pool->autostartLink == NULL) { virReportOOMError(); diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c index ab7c8cc77e..19379016d0 100644 --- a/src/cpu/cpu_x86.c +++ b/src/cpu/cpu_x86.c @@ -1092,6 +1092,12 @@ x86MapFree(struct x86_map *map) x86ModelFree(model); } + while (map->vendors != NULL) { + struct x86_vendor *vendor = map->vendors; + map->vendors = vendor->next; + x86VendorFree(vendor); + } + VIR_FREE(map); } diff --git a/src/util/util.c b/src/util/util.c index c173e491d0..9679dc908f 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -941,9 +941,11 @@ virPipeReadUntilEOF(int outfd, int errfd, fds[0].fd = outfd; fds[0].events = POLLIN; + fds[0].revents = 0; finished[0] = 0; fds[1].fd = errfd; fds[1].events = POLLIN; + fds[1].revents = 0; finished[1] = 0; while(!(finished[0] && finished[1])) {