Trivial fix for TBF memleak

Denys Fedorysychenko nuclearcat at nuclearcat.com
Fri Jul 9 19:48:06 EDT 2010


Without this patch, running alloc / free cache loop  will lead to huge memory 
leaks on machine with 3000 interfaces with tbf qdiscs.

Here was valgrind output:

==5580== 18,070,728 bytes in 347,514 blocks are definitely lost in loss record 
32 of 32                                                                                                                   
==5580==    at 0x4025485: calloc (in /lib/valgrind/vgpreload_memcheck-x86-
linux.so)                                                                                                                       
==5580==    by 0x405F410: tbf_msg_parser (tbf.c:46)                                                                                                                                                       
==5580==    by 0x405302B: qdisc_msg_parser (qdisc.c:119)                                                                                                                                                  
==5580==    by 0x4033DC9: nl_cache_parse (cache.c:643)                                                                                                                                                    
==5580==    by 0x4033E7C: update_msg_parser (cache.c:460)                                                                                                                                                 
==5580==    by 0x4038A11: nl_recvmsgs (netlink-local.h:112)                                                                                                                                               
==5580==    by 0x4034175: __cache_pickup (cache.c:483)                                                                                                                                                    
==5580==    by 0x40343FF: nl_cache_pickup (cache.c:516)                                                                                                                                                   
==5580==    by 0x403447D: nl_cache_refill (cache.c:698)                                                                                                                                                   
==5580==    by 0x4034AB7: nl_cache_alloc_and_fill (cache.c:198)                                                                                                                                           
==5580==    by 0x4053216: rtnl_qdisc_alloc_cache (qdisc.c:388)                                                                                                                                            
==5580==    by 0x80489DB: main (in /home/root/nltest)      

Patch complied and tested for same test case, no more leaks anymore.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tbf_memleak_fix.patch
Type: text/x-patch
Size: 506 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/libnl/attachments/20100710/275ce272/attachment.bin>


More information about the libnl mailing list