Index: linux-2.6.10-ck3/kernel/sched.c
===================================================================
--- linux-2.6.10-ck3.orig/kernel/sched.c	2005-01-11 23:00:46.000000000 +1100
+++ linux-2.6.10-ck3/kernel/sched.c	2005-01-11 23:43:25.582301609 +1100
@@ -573,8 +573,8 @@ static unsigned int rr_interval(task_t *
 }
 
 /*
- * slice - the duration a task runs before getting requeued at it's best
- * priority and has it's burst decremented.
+ * slice - the duration a task runs before getting requeued at its best
+ * priority and has its burst decremented.
  */
 static unsigned int slice(task_t *p)
 {
@@ -647,7 +647,8 @@ static void recalc_task_prio(task_t *p, 
 	unsigned int rr = rr_interval(p);
 	unsigned int best_burst = burst(p);
 	if (p->flags & PF_FORKED || sched_compute ||
-		(NS_TO_JIFFIES(p->runtime + sleep_time) < rr)) {
+		(p->runtime < sleep_time && 
+		(NS_TO_JIFFIES(p->runtime + sleep_time) < rr))) {
 			unsigned long ns_totalrun = p->totalrun + p->runtime;
 			unsigned long total_run = NS_TO_JIFFIES(ns_totalrun);
 			p->flags &= ~PF_FORKED;
