From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Gibson Subject: Re: [PATCH 4/4] iseries_veth: Cleanup skbs to prevent unregister_netdevice() hanging Date: Thu, 12 May 2005 21:28:57 +1000 Message-ID: <20050512112857.GC32694@localhost.localdomain> References: <200505121809.45419.michael@ellerman.id.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Andrew Morton , netdev@oss.sgi.com, Jeff Garzik , linux-kernel@vger.kernel.org, PPC64-dev Return-path: To: Michael Ellerman Content-Disposition: inline In-Reply-To: <200505121809.45419.michael@ellerman.id.au> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linuxppc64-dev-bounces@ozlabs.org Errors-To: linuxppc64-dev-bounces@ozlabs.org List-Id: netdev.vger.kernel.org On Thu, May 12, 2005 at 06:09:45PM +1000, Michael Ellerman wrote: > Hi Andrew, Jeff, > > The iseries_veth driver is badly behaved in that it will keep TX packets > hanging around forever if they're not ACK'ed and the queue never fills up. > > This causes the unregister_netdevice code to wait forever when we try to take > the device down, because there's still skbs around with references to our > struct net_device. > > There's already code to cleanup any un-ACK'ed packets in veth_stop_connection() > but it's being called after we unregister the net_device, which is too late. > > The fix is to rearrange the module exit function so that we cleanup any > outstanding skbs and then unregister the driver. > > Signed-off-by: Michael Ellerman Nice catch. Acked-by: David Gibson -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/people/dgibson