From owner-freebsd-hackers Tue Jun 15 14:23:37 1999 Delivered-To: freebsd-hackers@freebsd.org Received: from feral.com (feral.com [192.67.166.1]) by hub.freebsd.org (Postfix) with ESMTP id BDF8414CE7; Tue, 15 Jun 1999 14:23:32 -0700 (PDT) (envelope-from mjacob@feral.com) Received: from semuta.feral.com (semuta [192.67.166.70]) by feral.com (8.8.7/8.8.7) with ESMTP id OAA20120; Tue, 15 Jun 1999 14:23:30 -0700 Date: Tue, 15 Jun 1999 14:23:24 -0700 (PDT) From: Matthew Jacob Reply-To: mjacob@feral.com To: Matthew Dillon Cc: Guido van Rooij , freebsd-hackers@FreeBSD.ORG, peter@FreeBSD.ORG Subject: Re: Holy cow - path component freeing a mess? (was Re: D'oh!) In-Reply-To: <199906152055.NAA20771@apollo.backplane.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Umm, okay.... but I'm a little confused about how the zfree I'm adding to nfs_nget falls under this. Am I being really stupid here? On Tue, 15 Jun 1999, Matthew Dillon wrote: > This is totally screwed up: The rules used to determine whether > a path component buffer ( struct componentname, sys/namei.h ) is freed > by a VOP routine or not are idiotic. > > As far as I can tell, the rule is: > > * if no error is returned free the path component buffer, but only > if the SAVESTART flag is not set. > > * If an error is returned, free the path component buffer whether > SAVESTART is set or not. > > Combine this with the callers which decide whether to set SAVESTART, > and the result is an extremely fragile mess. Combine this with > VOP_ABORTOP's operation ( which frees the path component if SAVESTART is > not set ) and it gets even worse. > > Confused yet? > > At the very least, anyone who zfree's a path component should > clear the HASBUF flag so sanity checks can be added to the code. The > nfs_serv.c code is unnecessarily complex due to this junkiness. > > I would like to fix this in the tree and add sanity checks. > > -Matt > Matthew Dillon > > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-hackers" in the body of the message > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message