提交 428ea3a6 编写于 作者: E Eric Blake

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.
上级 6d0df648
...@@ -326,6 +326,7 @@ virDomainConfVMNWFilterTeardown; ...@@ -326,6 +326,7 @@ virDomainConfVMNWFilterTeardown;
# ebtables.h # ebtables.h
ebtablesAddForwardAllowIn; ebtablesAddForwardAllowIn;
ebtablesAddForwardPolicyReject; ebtablesAddForwardPolicyReject;
ebtablesContextFree;
ebtablesContextNew; ebtablesContextNew;
ebtablesRemoveForwardAllowIn; ebtablesRemoveForwardAllowIn;
......
...@@ -2069,10 +2069,9 @@ qemudShutdown(void) { ...@@ -2069,10 +2069,9 @@ qemudShutdown(void) {
virSysinfoDefFree(qemu_driver->hostsysinfo); virSysinfoDefFree(qemu_driver->hostsysinfo);
VIR_FREE(qemu_driver->securityDriverName);
VIR_FREE(qemu_driver->logDir);
VIR_FREE(qemu_driver->configDir); VIR_FREE(qemu_driver->configDir);
VIR_FREE(qemu_driver->autostartDir); VIR_FREE(qemu_driver->autostartDir);
VIR_FREE(qemu_driver->logDir);
VIR_FREE(qemu_driver->stateDir); VIR_FREE(qemu_driver->stateDir);
VIR_FREE(qemu_driver->libDir); VIR_FREE(qemu_driver->libDir);
VIR_FREE(qemu_driver->cacheDir); VIR_FREE(qemu_driver->cacheDir);
...@@ -2082,9 +2081,16 @@ qemudShutdown(void) { ...@@ -2082,9 +2081,16 @@ qemudShutdown(void) {
VIR_FREE(qemu_driver->vncListen); VIR_FREE(qemu_driver->vncListen);
VIR_FREE(qemu_driver->vncPassword); VIR_FREE(qemu_driver->vncPassword);
VIR_FREE(qemu_driver->vncSASLdir); 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->hugetlbfs_mount);
VIR_FREE(qemu_driver->hugepage_path); 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) { if (qemu_driver->cgroupDeviceACL) {
for (i = 0 ; qemu_driver->cgroupDeviceACL[i] != NULL ; i++) for (i = 0 ; qemu_driver->cgroupDeviceACL[i] != NULL ; i++)
......
...@@ -300,6 +300,8 @@ ebtablesContextNew(const char *driver) ...@@ -300,6 +300,8 @@ ebtablesContextNew(const char *driver)
void void
ebtablesContextFree(ebtablesContext *ctx) ebtablesContextFree(ebtablesContext *ctx)
{ {
if (!ctx)
return;
if (ctx->input_filter) if (ctx->input_filter)
ebtRulesFree(ctx->input_filter); ebtRulesFree(ctx->input_filter);
if (ctx->forward_filter) if (ctx->forward_filter)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册