]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/vfs/vfs_lookup.c
xnu-6153.81.5.tar.gz
[apple/xnu.git] / bsd / vfs / vfs_lookup.c
index 5fe5b737a4e2482dc7ac2ddfc4337a1e14083d87..85d47741ee3c9fea99a9709b9d45e49bd584b61d 100644 (file)
@@ -374,17 +374,23 @@ retry_copy:
         * we can release the icoount which we used to get our usecount.
         */
        proc_fdlock(p);
+       if (!(fdp->fd_flags & FD_CHROOT)) {
+               ndp->ni_rootdir = rootvnode;
+       } else {
+               ndp->ni_rootdir = fdp->fd_rdir;
+       }
 
-       if ((ndp->ni_rootdir = fdp->fd_rdir) == NULLVP) {
+       if (!ndp->ni_rootdir) {
                if (!(fdp->fd_flags & FD_CHROOT)) {
-                       ndp->ni_rootdir = rootvnode;
+                       proc_fdunlock(p);
+                       printf("rootvnode is not set\n");
                } else {
                        proc_fdunlock(p);
                        /* This should be a panic */
-                       printf("proc is chrooted but does not have a root directory set\n");
-                       error = ENOENT;
-                       goto error_out;
+                       printf("fdp->fd_rdir is not set\n");
                }
+               error = ENOENT;
+               goto error_out;
        }
 
        /*