use valid value when unmapping cpus
PATCH 1/1 use valid value when unmapping cpus
For some unknown reason, we stick a -1 in cpu_2_node when we unmap a cpu on i386. We're better off sticking a 0 in there, because at least 0 is a valid value if something references it. -1 is only going to cause problems at some point down the line. Besides, we initialize the array with 0's, so undoing it should return it to that same value.
Cheers!
-Matt
arch/i386/kernel/smpboot.c.fixed renamed from arch/i386/kernel/smpboot.c +1 -1
@@ -520,7 +520,7 @@ printk("Unmapping cpu %d from all nodes\n", cpu); for (node = 0; node < MAX_NR_NODES; node ++) node_2_cpu_mask[node] &= ~(1 << cpu); - cpu_2_node[cpu] = -1; + cpu_2_node[cpu] = 0; } #else /* !CONFIG_NUMA */
Quoted 4 lines · Matthew Dobson
For some unknown reason, we stick a -1 in
cpu_2_nodewhen we unmap a cpu on i386. We're better off sticking a 0 in there, because at least 0 is a valid value if something references it. -1 is only going to cause problems at some point down the line.
Problems down the line help you find the bogus dereference. Even better to stick a poison value in there.
Signature · 1 line
Matt Mackall : http://www.selenic.com : of or relating to the moon
Quoted 7 lines · Matt Mackall
Quoted 1 line · Matthew Dobson
For some unknown reason, we stick a -1 in
cpu_2_nodewhen we unmap a cpu on i386. We're better off sticking a 0 in there, because at least 0 is a valid value if something references it. -1 is only going to cause problems at some point down the line.Problems down the line help you find the bogus dereference. Even better to stick a poison value in there.
Well, it's not really a dereference issue. The function, cpu_to_node() just returns an integer which is the node that particular CPU is on. This should always return a valid value. This is used in many places, often as a direct index into an array, and we shouldn't have to check its return value everywhere. The default behavior is to just return 0, because 0 is a valid node, even for UP/SMP. The array of CPU -> node mappings is initialized to 0's on i386 already, so unmapping a CPU should return this mapping to its uninitialized state.
Cheers!
-Matt