diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 380df348cd57b0c347b29204f3e6d649048f4e3e..f94c24dd315f8b8476aa3886a11d442cc5ae8a37 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -7469,7 +7469,8 @@ static int select_idle_smt(struct task_struct *p, struct sched_domain *sd, int t is_expellee = is_expellee_task(p); for_each_cpu(cpu, cpu_smt_mask(target)) { - if (!cpumask_test_cpu(cpu, &p->cpus_allowed)) + if (!cpumask_test_cpu(cpu, &p->cpus_allowed) || + !cpumask_test_cpu(cpu, sched_domain_span(sd))) continue; if (id_idle_cpu(p, cpu, is_expellee, NULL)) return cpu;