summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/kern/sys_pipe.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-11-10 11:01:39 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-11-10 11:01:54 +0100
commit72d5fa11a8e3a0e4640da289d76ae672eb070565 (patch)
treed0a8362fffca074cb753e8a4d4c4aabc7ce5cbeb /freebsd/sys/kern/sys_pipe.c
parentChange RTEMS version to 5 (diff)
downloadrtems-libbsd-72d5fa11a8e3a0e4640da289d76ae672eb070565.tar.bz2
Fix reference counting for file descriptors
Update #3132.
Diffstat (limited to 'freebsd/sys/kern/sys_pipe.c')
-rwxr-xr-xfreebsd/sys/kern/sys_pipe.c6
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);
}