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

Re: Possible memory leak in ethernet driver



[My last mail didn't seem to reach the list, so I'm trying again.]

Hi,

I've been trying to fix a memory leak on Etrax100LX board with the
Axis 2.4.19 kernel.  The problem shows itself in that the free memory
on the board decreases all the time until finally all userspace
processes are killed due to lack of memory.

Looking at /proc/slabinfo it seems that something is leaking
skbuffers:

newly booted system:
skbuff_head_cache     77     98    160    2    2    1

system after an hour:
skbuff_head_cache   3942   3969    160   81   81    1

I've found a way to reproduce this problem, disconnect the ethernet
cable and do the following:

ifconfig eth0 192.168.0.1
while true; do telnet 192.168.0.2 1234 & usleep 100; killall telnet; done

So it seems that when the system is trying to transmit data on the
ethernet port but fails because the cable is disconnected it forgets
to free the skbuff.

I've found a similar report about skbuff leaks:

http://groups.google.com/groups?selm=E16Tl3p-00024g-00%40alex.pronet.local.lucky.linux.kernel&oe=UTF-8&output=gplain

Has anyone else seen this?  Is this a generic Linux bug or is it a
cris/drivers/ethernet.c specific bug?  Any good ideas on how to fix
this before I start digging into the code?

  /Christer

-- 
"Just how much can I get away with and still go to heaven?"

Freelance consultant specializing in device driver programming for Linux 
Christer Weinigel <christer@xxxxxxx.se">http://www.weinigel.se