|
|
| version 1.24, 2004/05/19 22:52:58 | version 1.25, 2004/05/21 15:41:23 |
|---|---|
| Line 983 fdinit(p) | Line 983 fdinit(p) |
| if (newfdp->fd_fd.fd_cdir) | if (newfdp->fd_fd.fd_cdir) |
| vref(newfdp->fd_fd.fd_cdir); | vref(newfdp->fd_fd.fd_cdir); |
| newfdp->fd_fd.fd_rdir = fdp->fd_rdir; | newfdp->fd_fd.fd_rdir = fdp->fd_rdir; |
| if (newfdp->fd_fd.fd_rdir) | vref(newfdp->fd_fd.fd_rdir); |
| vref(newfdp->fd_fd.fd_rdir); | |
| newfdp->fd_fd.fd_jdir = fdp->fd_jdir; | newfdp->fd_fd.fd_jdir = fdp->fd_jdir; |
| if (newfdp->fd_fd.fd_jdir) | if (newfdp->fd_fd.fd_jdir) |
| vref(newfdp->fd_fd.fd_jdir); | vref(newfdp->fd_fd.fd_jdir); |
| Line 1031 fdcopy(p) | Line 1030 fdcopy(p) |
| bcopy(fdp, newfdp, sizeof(struct filedesc)); | bcopy(fdp, newfdp, sizeof(struct filedesc)); |
| if (newfdp->fd_cdir) | if (newfdp->fd_cdir) |
| vref(newfdp->fd_cdir); | vref(newfdp->fd_cdir); |
| /* | |
| * We must check for fd_rdir here, at least for now because | |
| * the init process is created before we have access to the | |
| * rootvode to take a reference to it. | |
| */ | |
| if (newfdp->fd_rdir) | if (newfdp->fd_rdir) |
| vref(newfdp->fd_rdir); | vref(newfdp->fd_rdir); |
| if (newfdp->fd_jdir) | if (newfdp->fd_jdir) |
| Line 1193 fdfree(struct proc *p) | Line 1197 fdfree(struct proc *p) |
| FREE(fdp->fd_ofiles, M_FILEDESC); | FREE(fdp->fd_ofiles, M_FILEDESC); |
| if (fdp->fd_cdir) | if (fdp->fd_cdir) |
| vrele(fdp->fd_cdir); | vrele(fdp->fd_cdir); |
| if (fdp->fd_rdir) | vrele(fdp->fd_rdir); |
| vrele(fdp->fd_rdir); | |
| if (fdp->fd_jdir) | if (fdp->fd_jdir) |
| vrele(fdp->fd_jdir); | vrele(fdp->fd_jdir); |
| if (fdp->fd_knlist) | if (fdp->fd_knlist) |