Commit 638e13ac authored by Gautham R Shenoy's avatar Gautham R Shenoy Committed by Ingo Molnar

sched: fix rt ptracer monopolizing CPU

yield() in wait_task_inactive(), can cause a high priority thread to be
scheduled back in, and there by loop forever while it is waiting for some
lower priority thread which is unfortunately still on the runqueue.

Use schedule_timeout_uninterruptible(1) instead.
Signed-off-by: default avatarGautham R Shenoy <ego@in.ibm.com>
Credit: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 5cb350ba
...@@ -1133,7 +1133,7 @@ void wait_task_inactive(struct task_struct *p) ...@@ -1133,7 +1133,7 @@ void wait_task_inactive(struct task_struct *p)
* yield - it could be a while. * yield - it could be a while.
*/ */
if (unlikely(on_rq)) { if (unlikely(on_rq)) {
yield(); schedule_timeout_uninterruptible(1);
goto repeat; goto repeat;
} }
......
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