forked from luck/tmp_suning_uos_patched
has_stopped_jobs: s/task_is_stopped/SIGNAL_STOP_STOPPED/
has_stopped_jobs() naively checks task_is_stopped(group_leader). This was always wrong even without ptrace, group_leader can be dead. And given that ptrace can change the state to TRACED this is wrong even in the single-threaded case. Change the code to check SIGNAL_STOP_STOPPED and simplify the code, retval + break/continue doesn't make this trivial code more readable. We could probably add the usual "|| signal->group_stop_count" check but I don't think this makes sense, the task can start the group-stop right after the check anyway. Signed-off-by: Oleg Nesterov <oleg@redhat.com> Acked-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
bb188d7e64
commit
961c4675c7
|
@ -266,18 +266,16 @@ int is_current_pgrp_orphaned(void)
|
|||
return retval;
|
||||
}
|
||||
|
||||
static int has_stopped_jobs(struct pid *pgrp)
|
||||
static bool has_stopped_jobs(struct pid *pgrp)
|
||||
{
|
||||
int retval = 0;
|
||||
struct task_struct *p;
|
||||
|
||||
do_each_pid_task(pgrp, PIDTYPE_PGID, p) {
|
||||
if (!task_is_stopped(p))
|
||||
continue;
|
||||
retval = 1;
|
||||
break;
|
||||
if (p->signal->flags & SIGNAL_STOP_STOPPED)
|
||||
return true;
|
||||
} while_each_pid_task(pgrp, PIDTYPE_PGID, p);
|
||||
return retval;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue
Block a user