sched: fix reference to wrong cfs_rq
Commit 7db16c8c (sched: Fix SCHED_HRTICK bug leading to late preemption
of tasks) introduced a bug in sched_slice() calculation by using wrong
cfs_rq for tasks. rq->cfs was incorrectly used as task's cfs_rq, rather
than the correct one to which they belonged.
Fix the bug by using correct cfs_rq for tasks.
Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 05d71b45..4b0e97e 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -2128,11 +2128,11 @@
static void hrtick_start_fair(struct rq *rq, struct task_struct *p)
{
struct sched_entity *se = &p->se;
- struct cfs_rq *cfs_rq = &rq->cfs;
+ struct cfs_rq *cfs_rq = cfs_rq_of(se);
WARN_ON(task_rq(p) != rq);
- if (cfs_rq->h_nr_running > 1) {
+ if (rq->cfs.h_nr_running > 1) {
u64 slice = sched_slice(cfs_rq, se);
u64 ran = se->sum_exec_runtime - se->prev_sum_exec_runtime;
s64 delta = slice - ran;