From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jacob Gorm Hansen Subject: Resetting network device / skb leak Date: Wed, 21 Apr 2004 19:38:47 +0200 Sender: xen-devel-admin@lists.sourceforge.net Message-ID: <1082569127.902.22.camel@paleface> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Return-path: Errors-To: xen-devel-admin@lists.sourceforge.net List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , List-Archive: To: Xen list List-Id: xen-devel@lists.xenproject.org hi, I seem to have a problem with the Linux xen-network driver leaking skbs. This is probably my own fault, upon resumption after migration I call this: void network_resume(void) { struct net_device* dev = __dev_get_by_name("eth0"); MOD_DEC_USE_COUNT; network_open(dev); } -- which works fine. However, in network_open() the call to NETOP_RESET_RINGS seems to clear all the pointers to the old skbs, and network_alloc_rx_buffers() allocs a bunch of new ones. It suppose that means I have just leaked a whole bunch of skbs. I know the standard suspend/resume code performs almost a full ifup/ifdown (which I cannot do in my case) but I don't see any skb-freeing code in that case either? I have tried dev_kfree_skb()'ing the contents of the np->rx_skbs[1:] array before calling network_open, but doing so just crashes Linux :-( Any ideas? Jacob ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click