summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPawel Jakub Dawidek <pjd@FreeBSD.org>2012-06-19 22:21:59 +0000
committerPawel Jakub Dawidek <pjd@FreeBSD.org>2012-06-19 22:21:59 +0000
commit0a7007b98f0eeb7312a1f653e3d159a3c5bbff2b (patch)
tree10ee8b46a0db9f178c6e45564496a9aac9ad30dc
parentcd4ecf3cd26d22549af484b7ac84f6a9c8dae2d8 (diff)
Notes
-rw-r--r--sys/kern/kern_fork.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c
index f23c204969af..6cb95cdd7f50 100644
--- a/sys/kern/kern_fork.c
+++ b/sys/kern/kern_fork.c
@@ -921,8 +921,10 @@ fork1(struct thread *td, int flags, int pages, struct proc **procp,
*/
*procp = newproc;
#ifdef PROCDESC
- if (flags & RFPROCDESC)
+ if (flags & RFPROCDESC) {
procdesc_finit(newproc->p_procdesc, fp_procdesc);
+ fdrop(fp_procdesc, td);
+ }
#endif
racct_proc_fork_done(newproc);
return (0);
@@ -944,8 +946,10 @@ fail1:
vmspace_free(vm2);
uma_zfree(proc_zone, newproc);
#ifdef PROCDESC
- if (((flags & RFPROCDESC) != 0) && (fp_procdesc != NULL))
+ if (((flags & RFPROCDESC) != 0) && (fp_procdesc != NULL)) {
+ fdclose(td->td_proc->p_fd, fp_procdesc, *procdescp, td);
fdrop(fp_procdesc, td);
+ }
#endif
pause("fork", hz / 2);
return (error);