[PATCH 0/2] A couple of memleak fixes
for upcoming release. Michal Prívozník (2): virnwfilterobj: Don't leak @objs in virNWFilterObjListExport() nwfilter: Release driver config in nwfilterStateCleanupLocked() src/conf/virnwfilterobj.c | 1 + src/nwfilter/nwfilter_driver.c | 1 + 2 files changed, 2 insertions(+) -- 2.56.0
From: Michal Privoznik <mprivozn@redhat.com> Allocated in virNWFilterObjListCollect(), the @objs is an array of pointers to virNWFilterObj. While individual objects have their refcounter decremented (in case of failure), the array itself is never freed leading to a memory leak: ==272308== 192 bytes in 1 blocks are definitely lost in loss record 3,158 of 3,320 ==272308== at 0x491262B: calloc (vg_replace_malloc.c:1616) ==272308== by 0x500B721: g_malloc0 (gmem.c:133) ==272308== by 0x4AEC4C5: virNWFilterObjListCollect (virnwfilterobj.c:501) ==272308== by 0x4AEC599: virNWFilterObjListExport (virnwfilterobj.c:529) ==272308== by 0x1968A77C: nwfilterConnectListAllNWFilters (nwfilter_driver.c:500) ==272308== by 0x4D2A4E4: virConnectListAllNWFilters (libvirt-nwfilter.c:102) ==272308== by 0x402326B: remoteDispatchConnectListAllNWFilters (remote_daemon_dispatch_stubs.h:1775) Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/conf/virnwfilterobj.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/conf/virnwfilterobj.c b/src/conf/virnwfilterobj.c index 6456add593..22c7864c07 100644 --- a/src/conf/virnwfilterobj.c +++ b/src/conf/virnwfilterobj.c @@ -554,6 +554,7 @@ virNWFilterObjListExport(virConnectPtr conn, VIR_FREE(tmp_filters); for (i = 0; i < nfilters; i++) virNWFilterObjUnlock(objs[i]); + VIR_FREE(objs); return ret; } -- 2.56.0
From: Michal Privoznik <mprivozn@redhat.com> 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 <mprivozn@redhat.com> --- 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
On Tue, Oct 27, 2026 at 14:43:40 +0100, Michal Privoznik wrote:
for upcoming release.
Michal Prívozník (2): virnwfilterobj: Don't leak @objs in virNWFilterObjListExport() nwfilter: Release driver config in nwfilterStateCleanupLocked()
src/conf/virnwfilterobj.c | 1 + src/nwfilter/nwfilter_driver.c | 1 + 2 files changed, 2 insertions(+)
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
participants (2)
-
Jiri Denemark -
Michal Privoznik