svn commit: r205682 - head/sys/kern

Jaakko Heinonen jh at FreeBSD.org
Fri Mar 26 11:33:13 UTC 2010


Author: jh
Date: Fri Mar 26 11:33:12 2010
New Revision: 205682
URL: http://svn.freebsd.org/changeset/base/205682

Log:
  Support only LOOKUP operation for "/" in relookup() because lookup()
  can't succeed for CREATE, DELETE and RENAME.
  
  Discussed with:	bde

Modified:
  head/sys/kern/vfs_lookup.c

Modified: head/sys/kern/vfs_lookup.c
==============================================================================
--- head/sys/kern/vfs_lookup.c	Fri Mar 26 11:02:01 2010	(r205681)
+++ head/sys/kern/vfs_lookup.c	Fri Mar 26 11:33:12 2010	(r205682)
@@ -948,19 +948,17 @@ relookup(struct vnode *dvp, struct vnode
 #endif
 
 	/*
-	 * Check for degenerate name (e.g. / or "")
-	 * which is a way of talking about a directory,
-	 * e.g. like "/." or ".".
+	 * Check for "" which represents the root directory after slash
+	 * removal.
 	 */
 	if (cnp->cn_nameptr[0] == '\0') {
-		if (cnp->cn_nameiop != LOOKUP || wantparent) {
-			error = EISDIR;
-			goto bad;
-		}
-		if (dp->v_type != VDIR) {
-			error = ENOTDIR;
-			goto bad;
-		}
+		/*
+		 * Support only LOOKUP for "/" because lookup()
+		 * can't succeed for CREATE, DELETE and RENAME.
+		 */
+		KASSERT(cnp->cn_nameiop == LOOKUP, ("nameiop must be LOOKUP"));
+		KASSERT(dp->v_type == VDIR, ("dp is not a directory"));
+
 		if (!(cnp->cn_flags & LOCKLEAF))
 			VOP_UNLOCK(dp, 0);
 		*vpp = dp;


More information about the svn-src-head mailing list