hulk inclusion
category: bugfix
bugzilla: 189013
CVE: NA
--------------------------------
If cpuset_cpu_inactive() fails in sched_cpu_deactivate(), the
cpu offline failed, but sched_smt_present is decreased before
calling sched_cpu_deactivate, it leads unbalance dec/inc, so
fix it by increasing sched_smt_present in the error path.
Signed-off-by: Yang Yingliang <yangyingliang(a)huawei.com>
Signed-off-by: Yu Liao <liaoyu15(a)huawei.com>
---
kernel/sched/core.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 67bda877bfa8..7825ceaae0c4 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -5897,6 +5897,10 @@ int sched_cpu_deactivate(unsigned int cpu)
ret = cpuset_cpu_inactive(cpu);
if (ret) {
+#ifdef CONFIG_SCHED_SMT
+ if (cpumask_weight(cpu_smt_mask(cpu)) == 2)
+ static_branch_inc_cpuslocked(&sched_smt_present);
+#endif
set_cpu_active(cpu, true);
return ret;
}
--
2.25.1