Page MenuHomeFreeBSD

D9425.id24682.diff
No OneTemporary

D9425.id24682.diff

Index: sys/compat/linux/linux_file.c
===================================================================
--- sys/compat/linux/linux_file.c
+++ sys/compat/linux/linux_file.c
@@ -1540,8 +1540,13 @@
if (error)
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
@@ -1564,11 +1569,16 @@
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

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 23, 12:09 AM (10 h, 16 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30147172
Default Alt Text
D9425.id24682.diff (993 B)

Event Timeline