Commit 14bf01bb authored by Linus Torvalds's avatar Linus Torvalds

Fix inequality comparison against "task->state"

We should always use bitmask ops, rather than depend on some ordering of
the different states.  With the TASK_NONINTERACTIVE flag, the inequality
doesn't really work.

Oleg Nesterov argues (likely correctly) that this test is unnecessary in
the first place.  However, the minimal fix for now is to at least make
it work in the presense of TASK_NONINTERACTIVE.  Waiting for consensus
from Roland & co on potential bigger cleanups.
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent fd2e54b3
...@@ -1203,7 +1203,7 @@ static int wait_task_stopped(task_t *p, int delayed_group_leader, int noreap, ...@@ -1203,7 +1203,7 @@ static int wait_task_stopped(task_t *p, int delayed_group_leader, int noreap,
exit_code = p->exit_code; exit_code = p->exit_code;
if (unlikely(!exit_code) || if (unlikely(!exit_code) ||
unlikely(p->state > TASK_STOPPED)) unlikely(p->state & TASK_TRACED))
goto bail_ref; goto bail_ref;
return wait_noreap_copyout(p, pid, uid, return wait_noreap_copyout(p, pid, uid,
why, (exit_code << 8) | 0x7f, why, (exit_code << 8) | 0x7f,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment