[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20170304165440.GA13131@redhat.com>
Date: Sat, 4 Mar 2017 17:54:41 +0100
From: Oleg Nesterov <oleg@...hat.com>
To: "Eric W. Biederman" <ebiederm@...ssion.com>
Cc: Andrew Morton <akpm@...ux-foundation.org>,
Aleksa Sarai <asarai@...e.com>,
Andy Lutomirski <luto@...capital.net>,
Attila Fazekas <afazekas@...hat.com>,
Jann Horn <jann@...jh.net>, Kees Cook <keescook@...omium.org>,
Michal Hocko <mhocko@...nel.org>,
Ulrich Obergfell <uobergfe@...hat.com>,
linux-kernel@...r.kernel.org, linux-api@...r.kernel.org
Subject: Re: [PATCH 0/2] fix the traced mt-exec deadlock
On 03/03, Eric W. Biederman wrote:
>
> Oleg Nesterov <oleg@...hat.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.
Powered by blists - more mailing lists