Date: Tue, 15 Jun 1999 13:55:42 -0700 (PDT) From: Matthew Dillon <dillon@apollo.backplane.com> To: Matthew Jacob <mjacob@feral.com> Cc: Guido van Rooij <guido@gvr.org>, freebsd-hackers@FreeBSD.ORG, peter@FreeBSD.ORG Subject: Holy cow - path component freeing a mess? (was Re: D'oh!) Message-ID: <199906152055.NAA20771@apollo.backplane.com> References: <Pine.BSF.4.05.9906151110450.5752-100000@semuta.feral.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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 <dillon@backplane.com> To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199906152055.NAA20771>