diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-11-10 11:01:39 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-11-10 11:01:54 +0100 |
commit | 72d5fa11a8e3a0e4640da289d76ae672eb070565 (patch) | |
tree | d0a8362fffca074cb753e8a4d4c4aabc7ce5cbeb /freebsd/sys/kern/sys_pipe.c | |
parent | Change RTEMS version to 5 (diff) | |
download | rtems-libbsd-72d5fa11a8e3a0e4640da289d76ae672eb070565.tar.bz2 |
Fix reference counting for file descriptors
Update #3132.
Diffstat (limited to 'freebsd/sys/kern/sys_pipe.c')
-rwxr-xr-x | freebsd/sys/kern/sys_pipe.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/freebsd/sys/kern/sys_pipe.c b/freebsd/sys/kern/sys_pipe.c index 1636280f..08dd619a 100755 --- a/freebsd/sys/kern/sys_pipe.c +++ b/freebsd/sys/kern/sys_pipe.c @@ -485,16 +485,22 @@ kern_pipe(struct thread *td, int fildes[2], int flags, struct filecaps *fcaps1, error = falloc_caps(td, &wf, &fd, flags, fcaps2); if (error) { fdclose(td, rf, fildes[0]); +#ifndef __rtems__ fdrop(rf, td); +#endif /* __rtems__ */ /* rpipe has been closed by fdrop(). */ pipeclose(wpipe); return (error); } /* An extra reference on `wf' has been held for us by falloc_caps(). */ finit(wf, fflags, DTYPE_PIPE, wpipe, &pipeops); +#ifndef __rtems__ fdrop(wf, td); +#endif /* __rtems__ */ fildes[1] = fd; +#ifndef __rtems__ fdrop(rf, td); +#endif /* __rtems__ */ return (0); } |