Re: [BUG] sched: big numa dynamic sched domain memory corruption

From: Ingo Molnar
Date: Mon Jul 31 2006 - 03:17:10 EST



* Paul Jackson <pj@xxxxxxx> wrote:

> @@ -5675,12 +5675,13 @@ void build_sched_domains(const cpumask_t
> int group;
> struct sched_domain *sd = NULL, *p;
> cpumask_t nodemask = node_to_cpumask(cpu_to_node(i));
> + int cpus_per_node = cpus_weight(nodemask);
>
> cpus_and(nodemask, nodemask, *cpu_map);
>
> #ifdef CONFIG_NUMA
> - if (cpus_weight(*cpu_map)
> - > SD_NODES_PER_DOMAIN*cpus_weight(nodemask)) {
> + if (cpus_weight(cpu_online_map)
> + > SD_NODES_PER_DOMAIN*cpus_per_node) {
> if (!sched_group_allnodes) {
> sched_group_allnodes
> = kmalloc(sizeof(struct sched_group)

even if the bug is not fully understood in time, i think we should queue
the patch above for v2.6.18. (with the small nit that you should put the
new cpus_per_node variable under CONFIG_NUMA too, to avoid a compiler
warning)

Acked-by: Ingo Molnar <mingo@xxxxxxx>

Ingo
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/