summaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorDaniel Yeisley <dan.yeisley@unisys.com>2006-11-03 07:07:14 +0100
committerLinus Torvalds <torvalds@g5.osdl.org>2006-11-03 21:27:58 +0100
commit7f6b8876c7e66b0d15af134e2a5b87e55514eb6d (patch)
treeb15c14ff1d4b31f80071299ecdfef8c29236a4d5 /mm
parent[PATCH] ipmi_si_intf.c sets bad class_mask with PCI_DEVICE_CLASS (diff)
downloadlinux-7f6b8876c7e66b0d15af134e2a5b87e55514eb6d.tar.xz
linux-7f6b8876c7e66b0d15af134e2a5b87e55514eb6d.zip
[PATCH] init_reap_node() initialization fix
It looks like there is a bug in init_reap_node() in slab.c that can cause multiple oops's on certain ES7000 configurations. The variable reap_node is defined per cpu, but only initialized on a single CPU. This causes an oops in next_reap_node() when __get_cpu_var(reap_node) returns the wrong value. Fix is below. Signed-off-by: Dan Yeisley <dan.yeisley@unisys.com> Cc: Andi Kleen <ak@suse.de> Acked-by: Christoph Lameter <clameter@engr.sgi.com> Cc: Pekka Enberg <penberg@cs.helsinki.fi> Cc: Manfred Spraul <manfred@colorfullife.com> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/slab.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/slab.c b/mm/slab.c
index 84c631f30741..3c4a7e34eddc 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -883,7 +883,7 @@ static void init_reap_node(int cpu)
if (node == MAX_NUMNODES)
node = first_node(node_online_map);
- __get_cpu_var(reap_node) = node;
+ per_cpu(reap_node, cpu) = node;
}
static void next_reap_node(void)