diff --git a/[refs] b/[refs] index 529e7bcbfc50..e4b2e2f8453d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 20686a309aa98c518adbbd9b57cdbb1804143deb +refs/heads/master: 1bad95c3bee183719e15eebffef66afc3fb3f8b0 diff --git a/trunk/kernel/exit.c b/trunk/kernel/exit.c index 723a69b69fa1..190a4cdcdb4d 100644 --- a/trunk/kernel/exit.c +++ b/trunk/kernel/exit.c @@ -1351,7 +1351,7 @@ static int wait_task_zombie(struct task_struct *p, int noreap, * the lock and this task is uninteresting. If we return nonzero, we have * released the lock and the system call should return. */ -static int wait_task_stopped(struct task_struct *p, int delayed_group_leader, +static int wait_task_stopped(struct task_struct *p, int noreap, struct siginfo __user *infop, int __user *stat_addr, struct rusage __user *ru) { @@ -1365,8 +1365,7 @@ static int wait_task_stopped(struct task_struct *p, int delayed_group_leader, if (unlikely(!task_is_stopped_or_traced(p))) goto unlock_sig; - if (delayed_group_leader && !(p->ptrace & PT_PTRACED) && - p->signal->group_stop_count > 0) + if (!(p->ptrace & PT_PTRACED) && p->signal->group_stop_count > 0) /* * A group stop is in progress and this is the group leader. * We won't report until all threads have stopped. @@ -1522,7 +1521,7 @@ static long do_wait(pid_t pid, int options, struct siginfo __user *infop, !(options & WUNTRACED)) continue; - retval = wait_task_stopped(p, ret == 2, + retval = wait_task_stopped(p, (options & WNOWAIT), infop, stat_addr, ru); } else if (p->exit_state == EXIT_ZOMBIE) {