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;
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to