]> git.baikalelectronics.ru Git - kernel.git/commit
kernel/exit.c: release ptraced tasks before zap_pid_ns_processes
authorAndrei Vagin <avagin@gmail.com>
Fri, 1 Feb 2019 22:20:24 +0000 (14:20 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 1 Feb 2019 23:46:23 +0000 (15:46 -0800)
commiteaae8905e3a6df4c5f2b7c7f2894189faa330f08
tree8c3650a9b4aefdc21591239bccb51bfb8718df87
parent16755909cd91648541a6d95432efb93d37fcc26f
kernel/exit.c: release ptraced tasks before zap_pid_ns_processes

Currently, exit_ptrace() adds all ptraced tasks in a dead list, then
zap_pid_ns_processes() waits on all tasks in a current pidns, and only
then are tasks from the dead list released.

zap_pid_ns_processes() can get stuck on waiting tasks from the dead
list.  In this case, we will have one unkillable process with one or
more dead children.

Thanks to Oleg for the advice to release tasks in find_child_reaper().

Link: http://lkml.kernel.org/r/20190110175200.12442-1-avagin@gmail.com
Fixes: cca22dc1202a ("exit: ptrace: shift "reap dead" code from exit_ptrace() to forget_original_parent()")
Signed-off-by: Andrei Vagin <avagin@gmail.com>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/exit.c