From: Michal Privoznik <[email protected]>

The nwfilterStateCleanupLocked() is responsible for freeing
nwfilter driver struct members. But it never decrements the
driver's config object leading to a memory leak.

==272308== 154 (64 direct, 90 indirect) bytes in 1 blocks are definitely lost 
in loss record 3,136 of 3,320
==272308==    at 0x515C3C8: g_type_create_instance (gtype.c:1877)
==272308==    by 0x51411E3: g_object_new_internal.part.0 (gobject.c:2671)
==272308==    by 0x5142956: g_object_new_internal (gobject.c:2671)
==272308==    by 0x5142956: g_object_new_with_properties (gobject.c:2833)
==272308==    by 0x5143930: g_object_new (gobject.c:2481)
==272308==    by 0x49BCDB8: virObjectNew (virobject.c:257)
==272308==    by 0x1968C484: virNWFilterDriverConfigNew 
(nwfilter_driver_conf.c:163)
==272308==    by 0x196899AB: nwfilterStateInitialize (nwfilter_driver.c:237)
==272308==    by 0x4CE2BE3: virStateInitialize (libvirt.c:667)
==272308==    by 0x401C171: daemonRunStateInit (remote_daemon.c:583)

Signed-off-by: Michal Privoznik <[email protected]>
---
 src/nwfilter/nwfilter_driver.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c
index 9b981ddcbf..2ea55d1788 100644
--- a/src/nwfilter/nwfilter_driver.c
+++ b/src/nwfilter/nwfilter_driver.c
@@ -176,6 +176,7 @@ nwfilterStateCleanupLocked(void)
     }
 
     virObjectUnref(driver->bindings);
+    virObjectUnref(driver->config);
 
     /* free inactive nwfilters */
     virNWFilterObjListFree(driver->nwfilters);
-- 
2.56.0

Reply via email to