--- kernel/sched.c.orig Wed May 30 01:17:24 2001 +++ kernel/sched.c Wed May 30 01:41:34 2001 @@ -196,7 +196,7 @@ { if (p->policy & SCHED_YIELD) { p->policy &= ~SCHED_YIELD; - return 0; + return -1; } return goodness(prev, p, this_cpu); } @@ -729,7 +729,7 @@ * list, so our list starting at "p" is essentially fixed. */ while (p != &init_task) { - if (can_schedule(p)) { + if (p != prev && can_schedule(p)) { int weight = goodness(prev, p, this_cpu); if (weight > c) c = weight, next = p;