--- linux-2.6.4-rc1-mm2/kernel/sched.c	2004-03-06 02:17:25.000000000 +1100
+++ linux-2.6.4-rc1-mm2-so/kernel/sched.c	2004-03-06 14:28:10.094227754 +1100
@@ -2002,11 +2002,9 @@ static inline int dependent_sleeper(runq
 		 * task from using an unfair proportion of the
 		 * physical cpu's resources. -ck
 		 */
-		if (p->mm && smt_curr->mm && !rt_task(p) &&
-			((p->static_prio > smt_curr->static_prio &&
-			(smt_curr->time_slice * (100 - sd->per_cpu_gain) /
-			100) > task_timeslice(p)) ||
-			rt_task(smt_curr)))
+		if (((smt_curr->time_slice * (100 - sd->per_cpu_gain) / 100) >
+			task_timeslice(p) || rt_task(smt_curr)) &&
+			p->mm && smt_curr->mm && !rt_task(p))
 				ret |= 1;
 
 		/*
@@ -2014,9 +2012,9 @@ static inline int dependent_sleeper(runq
 		 * or wake it up if it has been put to sleep for priority
 		 * reasons.
 		 */
-		if ((smt_curr != smt_rq->idle &&
-			smt_curr->static_prio > p->static_prio) ||
-			(rt_task(p) && !rt_task(smt_curr)) ||
+		if ((((p->time_slice * (100 - sd->per_cpu_gain) / 100) > 
+			task_timeslice(smt_curr) || rt_task(p)) && 
+			smt_curr->mm && p->mm && !rt_task(smt_curr)) ||
 			(smt_curr == smt_rq->idle && smt_rq->nr_running))
 				resched_task(smt_curr);
 	}
