Commit 97b6ea7b authored by Milton Miller's avatar Milton Miller Committed by Ingo Molnar

sched: domain sysctl fixes: use for_each_online_cpu()

init_sched_domain_sysctl was walking cpus 0-n and referencing per_cpu
variables.  If the cpus_possible mask is not contigious this will result
in a crash referencing unallocated data.  If the online mask is not
contigious then we would show offline cpus and miss online ones.
Signed-off-by: default avatarMilton Miller <miltonm@bga.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 5cf9f062
...@@ -5326,11 +5326,12 @@ static void init_sched_domain_sysctl(void) ...@@ -5326,11 +5326,12 @@ static void init_sched_domain_sysctl(void)
sd_ctl_dir[0].child = entry; sd_ctl_dir[0].child = entry;
for (i = 0; i < cpu_num; i++, entry++) { for_each_online_cpu(i) {
snprintf(buf, 32, "cpu%d", i); snprintf(buf, 32, "cpu%d", i);
entry->procname = kstrdup(buf, GFP_KERNEL); entry->procname = kstrdup(buf, GFP_KERNEL);
entry->mode = 0555; entry->mode = 0555;
entry->child = sd_alloc_ctl_cpu_table(i); entry->child = sd_alloc_ctl_cpu_table(i);
entry++;
} }
sd_sysctl_header = register_sysctl_table(sd_ctl_root); sd_sysctl_header = register_sysctl_table(sd_ctl_root);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment