Re: Kernel memory profiling -> network memleak

Andrea Arcangeli (andrea@e-mind.com)
Thu, 6 May 1999 15:42:51 +0200 (CEST)


On Thu, 6 May 1999, Joerg Henne wrote:

>your memleak-Device. It clearly shows that the network driver for the RTL8139
>is the offender (dev.c seems to be accounted for the nic driver's memory,

I don't think the offender is RTL8139 but instead some packet-driver for
the nework that seems that it's missing simply one kfree_skb() somewhere.

What are you using in the network side (TCP/IP?)? Could you should be the
configuration of the network? To get this fixed faster I should know which
is the packet-driver that is generating the leak (arp, IP, whatever).

Please apply this patch against 2.2.7 and let me know which are the most
used packet driver that you are using:

Index: net/core/dev.c
===================================================================
RCS file: /var/cvs/linux/net/core/dev.c,v
retrieving revision 1.1.2.4
diff -u -r1.1.2.4 dev.c
--- dev.c 1999/04/09 01:00:31 1.1.2.4
+++ dev.c 1999/05/06 13:35:03
@@ -972,7 +972,10 @@
*/

if(skb2)
+ {
pt_prev->func(skb2, skb->dev, pt_prev);
+ printk("%p\n", pt_prev->func);
+ }
}
/* Remember the current last to do */
pt_prev=ptype;
@@ -984,7 +987,10 @@
*/

if(pt_prev)
+ {
pt_prev->func(skb, skb->dev, pt_prev);
+ printk("%p\n", pt_prev->func);
+ }
/*
* Has an unknown packet has been received ?
*/

You'll get tons of numbers in the kernel syslog, grab the most shown ones
and resolve them via System.map.

If your system.map looks like this:

c0160cb0 T arp_bind_neighbour
c0160d08 T arp_send
c0160ef8 t parp_redo
c0160f0c T arp_rcv
c0161254 T arp_req_set
c01613e8 t arp_state_to_flags
c0161408 t arp_req_get
c01614d0 T arp_req_delete
c01615f8 T arp_ioctl
c0161818 T arp_get_info

and you see many `c0160f0c' in the syslog you must tell me `arp_rcv' ;).

Andrea Arcangeli

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/