Messages in this thread | | | Date | Fri, 10 May 2019 21:14:57 +0200 | From | Christian Brauner <> | Subject | Re: [PATCH] fork: do not release lock that wasn't taken |
| |
On Fri, May 10, 2019 at 05:36:47PM +0200, Oleg Nesterov wrote: > On 05/10, Christian Brauner wrote: > > > > @@ -2102,7 +2102,7 @@ static __latent_entropy struct task_struct *copy_process( > > */ > > retval = cgroup_can_fork(p); > > if (retval) > > - goto bad_fork_put_pidfd; > > + goto bad_fork_cgroup_threadgroup_change_end; > > > > /* > > * From this point on we must avoid any synchronous user-space > > @@ -2217,11 +2217,12 @@ static __latent_entropy struct task_struct *copy_process( > > spin_unlock(¤t->sighand->siglock); > > write_unlock_irq(&tasklist_lock); > > cgroup_cancel_fork(p); > > +bad_fork_cgroup_threadgroup_change_end: > > + cgroup_threadgroup_change_end(current); > > bad_fork_put_pidfd: > > if (clone_flags & CLONE_PIDFD) > > ksys_close(pidfd); > > bad_fork_free_pid: > > - cgroup_threadgroup_change_end(current); > > if (pid != &init_struct_pid) > > free_pid(pid); > > bad_fork_cleanup_thread: > > Reviewed-by: Oleg Nesterov <oleg@redhat.com>
Thanks for the quick review, Oleg! :) Christian
| |