]> git.karo-electronics.de Git - linux-beck.git/blobdiff - kernel/sched/core.c
sched: Fix SD_OVERLAP
[linux-beck.git] / kernel / sched / core.c
index 55733616baaa582f678bcf7e133df1d3b1ba97d1..3a69374fb427dc5a4ef4f311d0910133c5c5dcf1 100644 (file)
@@ -6030,11 +6030,14 @@ build_overlap_sched_groups(struct sched_domain *sd, int cpu)
 
                cpumask_or(covered, covered, sg_span);
 
-               sg->sgp = *per_cpu_ptr(sdd->sgp, cpumask_first(sg_span));
+               sg->sgp = *per_cpu_ptr(sdd->sgp, i);
                atomic_inc(&sg->sgp->ref);
 
-               if (cpumask_test_cpu(cpu, sg_span))
+               if ((!groups && cpumask_test_cpu(cpu, sg_span)) ||
+                              cpumask_first(sg_span) == cpu) {
+                       WARN_ON_ONCE(!cpumask_test_cpu(cpu, sg_span));
                        groups = sg;
+               }
 
                if (!first)
                        first = sg;