From 790649850262010b510c024e5b94527fcaa281c0 Mon Sep 17 00:00:00 2001 From: Sai Harshini Nimmala Date: Sat, 19 Feb 2022 16:15:25 -0800 Subject: [PATCH] sched/walt: Fix in walt_lb_tick Currently, to compare cluster IDs of new and old CPUs, new cpu's runqueue is being accessed without checking if new cpu is valid. Fix this by checking new cpu's validity before it is used. Change-Id: I6a374de9690ede3d1deedb076959229b1e79b025 Signed-off-by: Sai Harshini Nimmala --- kernel/sched/walt/walt_lb.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kernel/sched/walt/walt_lb.c b/kernel/sched/walt/walt_lb.c index 09cbd735e009..9a0502a59e7b 100644 --- a/kernel/sched/walt/walt_lb.c +++ b/kernel/sched/walt/walt_lb.c @@ -633,10 +633,13 @@ void walt_lb_tick(struct rq *rq) new_cpu = walt_find_energy_efficient_cpu(p, prev_cpu, 0, 1); rcu_read_unlock(); + if (new_cpu < 0) + goto out_unlock; + new_wrq = (struct walt_rq *) cpu_rq(new_cpu)->android_vendor_data1; /* prevent active task migration to busy or same/lower capacity CPU */ - if (new_cpu < 0 || !available_idle_cpu(new_cpu) || + if (!available_idle_cpu(new_cpu) || new_wrq->cluster->id <= prev_wrq->cluster->id) goto out_unlock;