summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Yeisley <dan.yeisley@unisys.com>2006-11-02 22:07:14 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2006-11-03 12:27:58 -0800
commit7f6b8876c7e66b0d15af134e2a5b87e55514eb6d (patch)
treeb15c14ff1d4b31f80071299ecdfef8c29236a4d5
parentd13adb604693374c5fce47cd1a2017bcf3178eae (diff)
downloadlinux-7f6b8876c7e66b0d15af134e2a5b87e55514eb6d.tar.bz2
[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>
-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)