Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d7d82944 authored by Mike Galbraith's avatar Mike Galbraith Committed by Ingo Molnar
Browse files

sched: Fix signed unsigned comparison in check_preempt_tick()



Signed unsigned comparison may lead to superfluous resched if leftmost
is right of the current task, wasting a few cycles, and inadvertently
_lengthening_ the current task's slice.

Reported-by: default avatarVenkatesh Pallipadi <venki@google.com>
Signed-off-by: default avatarMike Galbraith <efault@gmx.de>
Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <1294202477.9384.5.camel@marge.simson.net>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent fce20979
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -1062,6 +1062,9 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr)
		struct sched_entity *se = __pick_next_entity(cfs_rq);
		struct sched_entity *se = __pick_next_entity(cfs_rq);
		s64 delta = curr->vruntime - se->vruntime;
		s64 delta = curr->vruntime - se->vruntime;


		if (delta < 0)
			return;

		if (delta > ideal_runtime)
		if (delta > ideal_runtime)
			resched_task(rq_of(cfs_rq)->curr);
			resched_task(rq_of(cfs_rq)->curr);
	}
	}