diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/exit.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index 4773ed990907..33cf8dba0a61 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
@@ -1329,7 +1329,12 @@ static int wait_task_continued(struct wait_opts *wo, struct task_struct *p) | |||
1329 | static int wait_consider_task(struct wait_opts *wo, int ptrace, | 1329 | static int wait_consider_task(struct wait_opts *wo, int ptrace, |
1330 | struct task_struct *p) | 1330 | struct task_struct *p) |
1331 | { | 1331 | { |
1332 | int ret = eligible_child(wo, p); | 1332 | int ret; |
1333 | |||
1334 | if (unlikely(p->exit_state == EXIT_DEAD)) | ||
1335 | return 0; | ||
1336 | |||
1337 | ret = eligible_child(wo, p); | ||
1333 | if (!ret) | 1338 | if (!ret) |
1334 | return ret; | 1339 | return ret; |
1335 | 1340 | ||
@@ -1347,10 +1352,6 @@ static int wait_consider_task(struct wait_opts *wo, int ptrace, | |||
1347 | return 0; | 1352 | return 0; |
1348 | } | 1353 | } |
1349 | 1354 | ||
1350 | /* dead body doesn't have much to contribute */ | ||
1351 | if (unlikely(p->exit_state == EXIT_DEAD)) | ||
1352 | return 0; | ||
1353 | |||
1354 | if (unlikely(p->exit_state == EXIT_TRACE)) { | 1355 | if (unlikely(p->exit_state == EXIT_TRACE)) { |
1355 | /* | 1356 | /* |
1356 | * ptrace == 0 means we are the natural parent. In this case | 1357 | * ptrace == 0 means we are the natural parent. In this case |