aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched.c
diff options
context:
space:
mode:
authorGautham R Shenoy <ego@in.ibm.com>2007-10-15 17:00:14 +0200
committerIngo Molnar <mingo@elte.hu>2007-10-15 17:00:14 +0200
commit638e13ac37a1a89473415f407cbffc1688a20fe2 (patch)
treec39999a223e8b272819c3676684c88d40aa47040 /kernel/sched.c
parent5cb350baf580017da38199625b7365b1763d7180 (diff)
downloadkernel_samsung_smdk4412-638e13ac37a1a89473415f407cbffc1688a20fe2.zip
kernel_samsung_smdk4412-638e13ac37a1a89473415f407cbffc1688a20fe2.tar.gz
kernel_samsung_smdk4412-638e13ac37a1a89473415f407cbffc1688a20fe2.tar.bz2
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>
Diffstat (limited to 'kernel/sched.c')
-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;
}