diff options
author | Oleg Nesterov <oleg@tv-sign.ru> | 2008-02-08 07:19:03 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-08 12:22:26 -0500 |
commit | 1bad95c3bee183719e15eebffef66afc3fb3f8b0 (patch) | |
tree | b875db7096572a69f3906db631708d7e75e22f3f /kernel/exit.c | |
parent | 20686a309aa98c518adbbd9b57cdbb1804143deb (diff) |
wait_task_stopped(): remove unneeded delay_group_leader check
wait_task_stopped() doesn't need the "delay_group_leader" parameter. If
the child is not traced it must be a group leader. With or without
subthreads ->group_stop_count == 0 when the whole task is stopped.
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: Mika Penttila <mika.penttila@kolumbus.fi>
Acked-by: Roland McGrath <roland@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/exit.c')
-rw-r--r-- | kernel/exit.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index 723a69b69fa1..190a4cdcdb4d 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
@@ -1351,7 +1351,7 @@ static int wait_task_zombie(struct task_struct *p, int noreap, | |||
1351 | * the lock and this task is uninteresting. If we return nonzero, we have | 1351 | * the lock and this task is uninteresting. If we return nonzero, we have |
1352 | * released the lock and the system call should return. | 1352 | * released the lock and the system call should return. |
1353 | */ | 1353 | */ |
1354 | static int wait_task_stopped(struct task_struct *p, int delayed_group_leader, | 1354 | static int wait_task_stopped(struct task_struct *p, |
1355 | int noreap, struct siginfo __user *infop, | 1355 | int noreap, struct siginfo __user *infop, |
1356 | int __user *stat_addr, struct rusage __user *ru) | 1356 | int __user *stat_addr, struct rusage __user *ru) |
1357 | { | 1357 | { |
@@ -1365,8 +1365,7 @@ static int wait_task_stopped(struct task_struct *p, int delayed_group_leader, | |||
1365 | if (unlikely(!task_is_stopped_or_traced(p))) | 1365 | if (unlikely(!task_is_stopped_or_traced(p))) |
1366 | goto unlock_sig; | 1366 | goto unlock_sig; |
1367 | 1367 | ||
1368 | if (delayed_group_leader && !(p->ptrace & PT_PTRACED) && | 1368 | if (!(p->ptrace & PT_PTRACED) && p->signal->group_stop_count > 0) |
1369 | p->signal->group_stop_count > 0) | ||
1370 | /* | 1369 | /* |
1371 | * A group stop is in progress and this is the group leader. | 1370 | * A group stop is in progress and this is the group leader. |
1372 | * We won't report until all threads have stopped. | 1371 | * We won't report until all threads have stopped. |
@@ -1522,7 +1521,7 @@ repeat: | |||
1522 | !(options & WUNTRACED)) | 1521 | !(options & WUNTRACED)) |
1523 | continue; | 1522 | continue; |
1524 | 1523 | ||
1525 | retval = wait_task_stopped(p, ret == 2, | 1524 | retval = wait_task_stopped(p, |
1526 | (options & WNOWAIT), infop, | 1525 | (options & WNOWAIT), infop, |
1527 | stat_addr, ru); | 1526 | stat_addr, ru); |
1528 | } else if (p->exit_state == EXIT_ZOMBIE) { | 1527 | } else if (p->exit_state == EXIT_ZOMBIE) { |