diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c index f73a4cf874d4..0b251c603fea 100644 --- a/sys/kern/kern_descrip.c +++ b/sys/kern/kern_descrip.c @@ -1850,9 +1850,10 @@ fdshare(struct filedesc *fdp) * Unshare a filedesc structure, if necessary by making a copy */ void -fdunshare(struct proc *p, struct thread *td) +fdunshare(struct thread *td) { struct filedesc *tmp; + struct proc *p = td->td_proc; if (p->p_fd->fd_refcnt == 1) return; diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index 7d3bad9d50c4..1d3a46d439af 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -594,7 +594,7 @@ interpret: * For security and other reasons, the file descriptor table cannot * be shared after an exec. */ - fdunshare(p, td); + fdunshare(td); /* * Malloc things before we need locks. diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c index b3d9c243f942..8135afba7e28 100644 --- a/sys/kern/kern_fork.c +++ b/sys/kern/kern_fork.c @@ -341,8 +341,8 @@ fork_norfproc(struct thread *td, int flags) /* * Unshare file descriptors (from parent). */ - if (flags & RFFDG) - fdunshare(p1, td); + if (flags & RFFDG) + fdunshare(td); fail: if (((p1->p_flag & (P_HADTHREADS|P_SYSTEM)) == P_HADTHREADS) && diff --git a/sys/sys/filedesc.h b/sys/sys/filedesc.h index 972cfc924750..d407cd20f44b 100644 --- a/sys/sys/filedesc.h +++ b/sys/sys/filedesc.h @@ -152,7 +152,7 @@ int fdcheckstd(struct thread *td); void fdclose(struct filedesc *fdp, struct file *fp, int idx, struct thread *td); void fdcloseexec(struct thread *td); struct filedesc *fdcopy(struct filedesc *fdp); -void fdunshare(struct proc *p, struct thread *td); +void fdunshare(struct thread *td); void fdescfree(struct thread *td); struct filedesc *fdinit(struct filedesc *fdp); struct filedesc *fdshare(struct filedesc *fdp);