diff --git a/[refs] b/[refs] index 718ebe26517c..41ecea3416d2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8d9cbf8240023f5b6d19f2106aff3d7077fc4a3b +refs/heads/master: 50b8d257486a45cba7b65ca978986ed216bbcc10 diff --git a/trunk/kernel/exit.c b/trunk/kernel/exit.c index d0b7d988f873..e6e01b959a0e 100644 --- a/trunk/kernel/exit.c +++ b/trunk/kernel/exit.c @@ -1540,8 +1540,15 @@ static int wait_consider_task(struct wait_opts *wo, int ptrace, } /* dead body doesn't have much to contribute */ - if (p->exit_state == EXIT_DEAD) + if (unlikely(p->exit_state == EXIT_DEAD)) { + /* + * But do not ignore this task until the tracer does + * wait_task_zombie()->do_notify_parent(). + */ + if (likely(!ptrace) && unlikely(ptrace_reparented(p))) + wo->notask_error = 0; return 0; + } /* slay zombie? */ if (p->exit_state == EXIT_ZOMBIE) {