summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGautham R Shenoy <ego@in.ibm.com>2007-10-15 15:00:14 (GMT)
committerIngo Molnar <mingo@elte.hu>2007-10-15 15:00:14 (GMT)
commit638e13ac37a1a89473415f407cbffc1688a20fe2 (patch)
treec39999a223e8b272819c3676684c88d40aa47040
parent5cb350baf580017da38199625b7365b1763d7180 (diff)
downloadlinux-638e13ac37a1a89473415f407cbffc1688a20fe2.tar.xz
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: Gautham R Shenoy <ego@in.ibm.com> Credit: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--kernel/sched.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index 9ac9989..48fc74b 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -1133,7 +1133,7 @@ repeat:
* yield - it could be a while.
*/
if (unlikely(on_rq)) {
- yield();
+ schedule_timeout_uninterruptible(1);
goto repeat;
}