diff options
| author | Alfred Perlstein <alfred@FreeBSD.org> | 2003-01-01 01:01:14 +0000 |
|---|---|---|
| committer | Alfred Perlstein <alfred@FreeBSD.org> | 2003-01-01 01:01:14 +0000 |
| commit | c7f1c11b205a9632c15924b49c25e55dc0f33ed8 (patch) | |
| tree | 04b5ebad0155684fd0a069e7d13afa8415032941 /sys/kern | |
| parent | 59c97598d311e3e71f9e5598d532223e5855e3bd (diff) | |
Notes
Diffstat (limited to 'sys/kern')
| -rw-r--r-- | sys/kern/kern_descrip.c | 20 | ||||
| -rw-r--r-- | sys/kern/kern_fork.c | 8 |
2 files changed, 14 insertions, 14 deletions
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c index dba34c50735c..fbc12e433ffd 100644 --- a/sys/kern/kern_descrip.c +++ b/sys/kern/kern_descrip.c @@ -1202,14 +1202,14 @@ ffree(fp) } /* - * Build a new filedesc structure. + * Build a new filedesc structure from another. + * Copy the current, root, and jail root vnode references. */ struct filedesc * -fdinit(td) - struct thread *td; +fdinit(fdp) + struct filedesc *fdp; { register struct filedesc0 *newfdp; - register struct filedesc *fdp = td->td_proc->p_fd; MALLOC(newfdp, struct filedesc0 *, sizeof(struct filedesc0), M_FILEDESC, M_WAITOK | M_ZERO); @@ -1238,13 +1238,13 @@ fdinit(td) * Share a filedesc structure. */ struct filedesc * -fdshare(p) - struct proc *p; +fdshare(fdp) + struct filedesc *fdp; { - FILEDESC_LOCK(p->p_fd); - p->p_fd->fd_refcnt++; - FILEDESC_UNLOCK(p->p_fd); - return (p->p_fd); + FILEDESC_LOCK(fdp); + fdp->fd_refcnt++; + FILEDESC_UNLOCK(fdp); + return (fdp); } /* diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c index 1a8e4d25904c..7aa0dc0d935a 100644 --- a/sys/kern/kern_fork.c +++ b/sys/kern/kern_fork.c @@ -258,8 +258,8 @@ fork1(td, flags, pages, procp) */ if (flags & RFCFDG) { struct filedesc *fdtmp; - fdtmp = fdinit(td); /* XXXKSE */ - fdfree(td); /* XXXKSE */ + fdtmp = fdinit(td->td_proc->p_fd); + fdfree(td); p1->p_fd = fdtmp; } @@ -445,13 +445,13 @@ again: * arguments or something. */ if (flags & RFCFDG) - fd = fdinit(td); + fd = fdinit(td->td_proc->p_fd); else if (flags & RFFDG) { FILEDESC_LOCK(p1->p_fd); fd = fdcopy(td); FILEDESC_UNLOCK(p1->p_fd); } else - fd = fdshare(p1); + fd = fdshare(p1->p_fd); /* * Make a proc table entry for the new process. |
