Re: [PATCH 2/3] virnetworkobj: Free fwRemoval before setting another one in virNetworkObjSetFwRemoval()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jun 14, 2024 at 03:07:00PM +0200, Michal Privoznik wrote:
> The virNetworkObjSetFwRemoval() function is called at least two
> times when there's a network running and network driver
> initializes:
> 
> 1) when loading state XMLs:
>   #0  virNetworkObjSetFwRemoval (obj=0x7fffd4028250, fwRemoval=0x7fffd4020ad0) at ../src/conf/virnetworkobj.c:258
>   #1  0x00007ffff7a69c68 in virNetworkLoadState (...) at ../src/conf/virnetworkobj.c:952
>   #2  0x00007ffff7a6a35d in virNetworkObjLoadAllState (...) at ../src/conf/virnetworkobj.c:1072
>   #3  0x00007ffff7f9625f in networkStateInitialize (...) at ../src/network/bridge_driver.c:624
> 
> 2) when firewall rules are being reloaded:
>   #0  virNetworkObjSetFwRemoval (obj=0x7fffd4028250, fwRemoval=0x7fffd402e5b0) at ../src/conf/virnetworkobj.c:258
>   #1  0x00007ffff7f997b4 in networkReloadFirewallRulesHelper (obj=0x7fffd4028250, opaque=0x0) at ../src/network/bridge_driver.c:1703
>   #2  0x00007ffff7a6b09b in virNetworkObjListForEachHelper (payload=0x7fffd4028250, ...) at ../src/conf/virnetworkobj.c:1414
>   #3  0x00007ffff79287b6 in virHashForEachSafe (...) at ../src/util/virhash.c:387
>   #4  0x00007ffff7a6b119 in virNetworkObjListForEach (...) at ../src/conf/virnetworkobj.c:1441
>   #5  0x00007ffff7f99978 in networkReloadFirewallRules (...) at ../src/network/bridge_driver.c:1742
>   #6  0x00007ffff7f962f2 in networkStateInitialize (...) at ../src/network/bridge_driver.c:645
> 
> Since virNetworkObjSetFwRemoval() does not free the object stored
> in the first call, the second call just overwrites the stored
> pointer leading to a memory leak:
> 
>   5,530 (48 direct, 5,482 indirect) bytes in 1 blocks are definitely lost in loss record 1,863 of 1,880
>      at 0x4848C43: calloc (vg_replace_malloc.c:1595)
>      by 0x4F1E979: g_malloc0 (in /usr/lib64/libglib-2.0.so.0.7800.6)
>      by 0x4976E32: virFirewallNew (virfirewall.c:118)
>      by 0x4979BA9: virFirewallParseXML (virfirewall.c:1071)
>      by 0x4ABEB1E: virNetworkLoadState (virnetworkobj.c:938)
>      by 0x4ABF35C: virNetworkObjLoadAllState (virnetworkobj.c:1072)
>      by 0x4E9A25E: networkStateInitialize (bridge_driver.c:624)
>      by 0x4CB1FA6: virStateInitialize (libvirt.c:665)
>      by 0x15A6C6: daemonRunStateInit (remote_daemon.c:611)
>      by 0x49E69F0: virThreadHelper (virthread.c:256)
>      by 0x532B428: start_thread (in /lib64/libc.so.6)
>      by 0x5397373: clone (in /lib64/libc.so.6)
> 
> Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx>
> ---
>  src/conf/virnetworkobj.c | 1 +
>  1 file changed, 1 insertion(+)

Reviewed-by: Daniel P. Berrangé <berrange@xxxxxxxxxx>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux