diff options
author | Oleg Nesterov <oleg@tv-sign.ru> | 2006-08-27 04:23:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-08-27 14:01:30 -0400 |
commit | d015baebba44613ef59ddffeae2114fa4ede7104 (patch) | |
tree | 24fb1e84890da3dbbd391b79f91426e3de274480 | |
parent | 533475d3d48eb839be2b57f6b020150abae91063 (diff) |
[PATCH] futex_find_get_task(): remove an obscure EXIT_ZOMBIE check
futex_find_get_task:
if (p->state == EXIT_ZOMBIE || p->exit_state == EXIT_ZOMBIE)
return NULL;
I can't understand this. First, p->state can't be EXIT_ZOMBIE. The
->exit_state check looks strange too. Sub-threads or tasks whose ->parent
ignores SIGCHLD go directly to EXIT_DEAD state (I am ignoring a ptrace
case). Why EXIT_DEAD tasks should be ok? Yes, EXIT_ZOMBIE is more
important (a task may stay zombie for a long time), but this doesn't mean
we should explicitely ignore other EXIT_XXX states.
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Acked-by: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | kernel/futex.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/futex.c b/kernel/futex.c index d4633c588f33..b9b8aea5389e 100644 --- a/kernel/futex.c +++ b/kernel/futex.c | |||
@@ -397,7 +397,7 @@ static struct task_struct * futex_find_get_task(pid_t pid) | |||
397 | p = NULL; | 397 | p = NULL; |
398 | goto out_unlock; | 398 | goto out_unlock; |
399 | } | 399 | } |
400 | if (p->state == EXIT_ZOMBIE || p->exit_state == EXIT_ZOMBIE) { | 400 | if (p->exit_state != 0) { |
401 | p = NULL; | 401 | p = NULL; |
402 | goto out_unlock; | 402 | goto out_unlock; |
403 | } | 403 | } |