lkml.org 
[lkml]   [2017]   [Mar]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 0/2] fix the traced mt-exec deadlock
On 03/03, Eric W. Biederman wrote:
>
> Oleg Nesterov <oleg@redhat.com> writes:
>
> >> @@ -699,8 +701,6 @@ static void exit_notify(struct task_struct *tsk, int group_dead)
> >> }
> >>
> >> tsk->exit_state = autoreap ? EXIT_DEAD : EXIT_ZOMBIE;
> >> - if (tsk->exit_state == EXIT_DEAD)
> >> - list_add(&tsk->ptrace_entry, &dead);
> >>
> >> /* mt-exec, de_thread() is waiting for group leader */
> >> if (unlikely(tsk->signal->notify_count < 0))
> >> @@ -711,6 +711,8 @@ static void exit_notify(struct task_struct *tsk, int group_dead)
> >> list_del_init(&p->ptrace_entry);
> >> release_task(p);
> >> }
> >> + if (autoreap)
> >> + release_task(tsk);
> >
> > These 2 changes are not needed. release_task(tsk) will be called by
> > list_for_each_entry_safe() above if autoreap == T.
>
> Except for the practical case that for threads that are ptraced
> tsk->ptrace_entry is already in use. Which means we can't use
> list_add(&tsk->ptrace_entry, &dead).

Yes, I was wrong here, thanks for correcting me.

Oleg.

\
 
 \ /
  Last update: 2017-03-04 18:06    [W:0.125 / U:0.808 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site