From owner-svn-src-all@FreeBSD.ORG Sun Mar 7 15:20:08 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E5FEE10656B1; Sun, 7 Mar 2010 15:20:08 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from mail.cksoft.de (mail.cksoft.de [IPv6:2001:4068:10::3]) by mx1.freebsd.org (Postfix) with ESMTP id 7AB638FC1E; Sun, 7 Mar 2010 15:20:08 +0000 (UTC) Received: from localhost (amavis.fra.cksoft.de [192.168.74.71]) by mail.cksoft.de (Postfix) with ESMTP id DC12F41C64A; Sun, 7 Mar 2010 16:20:06 +0100 (CET) X-Virus-Scanned: amavisd-new at cksoft.de Received: from mail.cksoft.de ([192.168.74.103]) by localhost (amavis.fra.cksoft.de [192.168.74.71]) (amavisd-new, port 10024) with ESMTP id x1HQWp7TLYXC; Sun, 7 Mar 2010 16:20:06 +0100 (CET) Received: by mail.cksoft.de (Postfix, from userid 66) id 0DBB741C667; Sun, 7 Mar 2010 16:20:06 +0100 (CET) Received: from maildrop.int.zabbadoz.net (maildrop.int.zabbadoz.net [10.111.66.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.int.zabbadoz.net (Postfix) with ESMTP id 9E4A64448EC; Sun, 7 Mar 2010 15:15:28 +0000 (UTC) Date: Sun, 7 Mar 2010 15:15:28 +0000 (UTC) From: "Bjoern A. Zeeb" X-X-Sender: bz@maildrop.int.zabbadoz.net To: Bruce Cran In-Reply-To: <20100307150909.GA6554@muon.cran.org.uk> Message-ID: <20100307151125.P33454@maildrop.int.zabbadoz.net> References: <201003062127.o26LRQ6J042057@svn.freebsd.org> <20100307150909.GA6554@muon.cran.org.uk> X-OpenPGP-Key: 0x14003F198FEFA3E77207EE8D2B58B8F83CCF1842 MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r204808 - head/sys/net X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 Mar 2010 15:20:09 -0000 On Sun, 7 Mar 2010, Bruce Cran wrote: > On Sat, Mar 06, 2010 at 09:27:26PM +0000, Bjoern A. Zeeb wrote: >> Author: bz >> Date: Sat Mar 6 21:27:26 2010 >> New Revision: 204808 >> URL: http://svn.freebsd.org/changeset/base/204808 >> >> Log: >> Introduce a function rn_detachhead() that will free the >> radix table root nodes. This is only needed (and available) >> in the virtualization case to free the resources when tearing >> down a virtual network stack. >> >> Sponsored by: ISPsystem >> Reviewed by: julian, zec >> MFC after: 5 days >> >> Modified: >> head/sys/net/radix.c >> head/sys/net/radix.h >> >> Modified: head/sys/net/radix.c >> ============================================================================== >> --- head/sys/net/radix.c Sat Mar 6 21:24:32 2010 (r204807) >> +++ head/sys/net/radix.c Sat Mar 6 21:27:26 2010 (r204808) >> @@ -1161,6 +1161,24 @@ rn_inithead(head, off) >> return (1); >> } >> >> +#ifdef VIMAGE >> +int >> +rn_detachhead(void **head) >> +{ >> + struct radix_node_head *rnh; >> + >> + KASSERT((head != NULL && *head != NULL), >> + ("%s: head already freed", __func__)); >> + rnh = *head; >> + >> + /* Free nodes. */ >> + Free(rnh); >> + >> + *head = NULL; >> + return (1); >> +} >> +#endif > > Is this sufficient to free all the memory? From what I can see, 'Free' is > just freeing the pointer and not walking the tree to free the nodes too. > > I don't know if the memory allocation is being done differently, but I > fixed the same issue on Windows by introducing a 'rn_free_subtree' > function - I don't know if it's entirely correct but the code can be > seen at http://www.bluestop.org/viewvc/repos/sctpDrv/net/radix.c?r1=24&r2=23&pathrev=24 > > I also found that rn_zeros wasn't being freed when the driver got > unloaded. You will notice that it's not called from anywhere yet;) I have another dozen of patches to fix various places and free things. Freeing of the tree is (will be) done from route.c (from my memory). I am just flushing the "easy" ones from my patch queue while slowly reaching timeout for the others that I had sent out for review. In case you want to have a look at the complete set send me a mail to bz@ and I'll forward you the remaining set. /bz -- Bjoern A. Zeeb It will not break if you know what you are doing.