On Wed, 2011-03-30 at 10:54 +0100, Daniel Baluta wrote: > >> unreferenced object 0x8f90d000 (size 4096): > >> comm "swapper", pid 1, jiffies 4294937330 (age 815.000s) > >> hex dump (first 32 bytes): > >> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ > >> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ > >> backtrace: > >> [<80529644>] alloc_large_system_hash+0x2f8/0x410 > >> [<805383b4>] udp_table_init+0x4c/0x158 > >> [<805384dc>] udp_init+0x1c/0x94 > >> [<8053889c>] inet_init+0x184/0x2a0 > >> [<80100584>] do_one_initcall+0x174/0x1e0 > >> [<8051f348>] kernel_init+0xe4/0x174 > >> [<80103d4c>] kernel_thread_helper+0x10/0x18 > > > > If you for the kmemleak scan (via echo) a few times, do you get more > > leaks? The udp_table_init() function looks like it could leak some > > memory but I haven't seen it before. I'm not sure whether this is a > > false positive or a real leak. > > Looking again at udp_init_table it seem that a memory leak is possible. > Could you post your .config and the full output of dmesg after booting. > > A situation where CONFIG_BASE_SMALL is 0, and > table->mask < UDP_HTABLE_SIZE_MIN - 1 would lead > to a memory leak. It's worth printing the table->mask on MIPS as well. I think have the same configuration on ARM and put some printk's but the table->mask is set to higher value and the second if condition is false. The checks could be simply reordered but I don't know the reasoning behind the current code sequence (I cc'ed Eric). -- Catalin