svn commit: r315538 - stable/11/sys/compat/linux
Edward Tomasz Napierala
trasz at FreeBSD.org
Sun Mar 19 10:32:41 UTC 2017
Author: trasz
Date: Sun Mar 19 10:32:39 2017
New Revision: 315538
URL: https://svnweb.freebsd.org/changeset/base/315538
Log:
MFC r313283:
Fix linux_pipe() and linux_pipe2() to close file descriptors on copyout
error.
Modified:
stable/11/sys/compat/linux/linux_file.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/compat/linux/linux_file.c
==============================================================================
--- stable/11/sys/compat/linux/linux_file.c Sun Mar 19 10:28:51 2017 (r315537)
+++ stable/11/sys/compat/linux/linux_file.c Sun Mar 19 10:32:39 2017 (r315538)
@@ -1629,11 +1629,16 @@ linux_pipe(struct thread *td, struct lin
#endif
error = kern_pipe(td, fildes, 0, NULL, NULL);
- if (error)
+ if (error != 0)
return (error);
- /* XXX: Close descriptors on error. */
- return (copyout(fildes, args->pipefds, sizeof(fildes)));
+ error = copyout(fildes, args->pipefds, sizeof(fildes));
+ if (error != 0) {
+ (void)kern_close(td, fildes[0]);
+ (void)kern_close(td, fildes[1]);
+ }
+
+ return (error);
}
int
@@ -1656,11 +1661,16 @@ linux_pipe2(struct thread *td, struct li
if ((args->flags & LINUX_O_CLOEXEC) != 0)
flags |= O_CLOEXEC;
error = kern_pipe(td, fildes, flags, NULL, NULL);
- if (error)
+ if (error != 0)
return (error);
- /* XXX: Close descriptors on error. */
- return (copyout(fildes, args->pipefds, sizeof(fildes)));
+ error = copyout(fildes, args->pipefds, sizeof(fildes));
+ if (error != 0) {
+ (void)kern_close(td, fildes[0]);
+ (void)kern_close(td, fildes[1]);
+ }
+
+ return (error);
}
int
More information about the svn-src-stable-11
mailing list