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 <dil...@backplane.com> To Unsubscribe: send mail to majord...@freebsd.org with "unsubscribe freebsd-hackers" in the body of the message