Messages in this thread | | | Date | Mon, 6 Apr 2015 17:30:35 +0900 | From | Sergey Senozhatsky <> | Subject | Re: [PATCH v2 7/7] clone4: Add a CLONE_FD flag to get task exit notification via fd |
| |
On (03/15/15 01:00), Josh Triplett wrote: [..] > + > +/* Handle the CLONE_FD case for copy_process. */ > +int clonefd_do_clone(u64 clone_flags, struct task_struct *p, > + struct clone4_args *args, struct clonefd_setup *setup) > +{ > + int flags; > + struct file *file; > + int fd; > + > + p->clonefd = !!(clone_flags & CLONE_FD); > + if (!p->clonefd) > + return 0; > + > + if (args->clonefd_flags & ~(O_CLOEXEC | O_NONBLOCK)) > + return -EINVAL; > + > + init_waitqueue_head(&p->clonefd_wqh); > + > + get_task_struct(p); > + flags = O_RDONLY | FMODE_ATOMIC_POS | args->clonefd_flags; > + file = anon_inode_getfile("[process]", &clonefd_fops, p, flags); > + if (IS_ERR(file)) { > + put_task_struct(p); > + return PTR_ERR(file); > + } > + > + fd = get_unused_fd_flags(flags); > + if (fd < 0) {
+ put_task_struct(p); ?
> + fput(file); > + return fd; > + } > + > + setup->fd = fd; > + setup->file = file; > + return 0; > +} [..]
-ss
| |