From 428ea3a6261aa394d2ec465fcc45c45788e5f068 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Tue, 30 Nov 2010 09:00:30 -0700 Subject: [PATCH] qemu: plug memory leak * src/qemu/qemu_driver.c (qemudShutdown): Free all strings and the ebtables structure. * src/libvirt_private.syms (ebtablesContextFree): Export missing symbol. * src/util/ebtables.c (ebtablesContextFree): Allow early exit. --- src/libvirt_private.syms | 1 + src/qemu/qemu_driver.c | 12 +++++++++--- src/util/ebtables.c | 2 ++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 3c1c823d44..f251c94345 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -326,6 +326,7 @@ virDomainConfVMNWFilterTeardown; # ebtables.h ebtablesAddForwardAllowIn; ebtablesAddForwardPolicyReject; +ebtablesContextFree; ebtablesContextNew; ebtablesRemoveForwardAllowIn; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 73b1e3ff81..853995c437 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2069,10 +2069,9 @@ qemudShutdown(void) { virSysinfoDefFree(qemu_driver->hostsysinfo); - VIR_FREE(qemu_driver->securityDriverName); - VIR_FREE(qemu_driver->logDir); VIR_FREE(qemu_driver->configDir); VIR_FREE(qemu_driver->autostartDir); + VIR_FREE(qemu_driver->logDir); VIR_FREE(qemu_driver->stateDir); VIR_FREE(qemu_driver->libDir); VIR_FREE(qemu_driver->cacheDir); @@ -2082,9 +2081,16 @@ qemudShutdown(void) { VIR_FREE(qemu_driver->vncListen); VIR_FREE(qemu_driver->vncPassword); VIR_FREE(qemu_driver->vncSASLdir); - VIR_FREE(qemu_driver->saveImageFormat); + VIR_FREE(qemu_driver->spiceTLSx509certdir); + VIR_FREE(qemu_driver->spiceListen); + VIR_FREE(qemu_driver->spicePassword); VIR_FREE(qemu_driver->hugetlbfs_mount); VIR_FREE(qemu_driver->hugepage_path); + VIR_FREE(qemu_driver->securityDriverName); + VIR_FREE(qemu_driver->saveImageFormat); + VIR_FREE(qemu_driver->dumpImageFormat); + + ebtablesContextFree(qemu_driver->ebtables); if (qemu_driver->cgroupDeviceACL) { for (i = 0 ; qemu_driver->cgroupDeviceACL[i] != NULL ; i++) diff --git a/src/util/ebtables.c b/src/util/ebtables.c index f707756e4b..e3b8da4dbd 100644 --- a/src/util/ebtables.c +++ b/src/util/ebtables.c @@ -300,6 +300,8 @@ ebtablesContextNew(const char *driver) void ebtablesContextFree(ebtablesContext *ctx) { + if (!ctx) + return; if (ctx->input_filter) ebtRulesFree(ctx->input_filter); if (ctx->forward_filter) -- GitLab