提交 ec1f5eee 编写于 作者: D Daniel Yeisley 提交者: Christoph Lameter

slab: fix cache_cache bootstrap in kmem_cache_init()

Commit 556a169d ("slab: fix bootstrap on
memoryless node") introduced bootstrap-time cache_cache list3s for all nodes
but forgot that initkmem_list3 needs to be accessed by [somevalue + node]. This
patch fixes list_add() corruption in mm/slab.c seen on the ES7000.

Cc: Mel Gorman <mel@csn.ul.ie>
Cc: Olaf Hering <olaf@aepfle.de>
Cc: Christoph Lameter <clameter@sgi.com>
Signed-off-by: NDan Yeisley <dan.yeisley@unisys.com>
Signed-off-by: NPekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: NChristoph Lameter <clameter@sgi.com>
上级 53625b42
...@@ -1481,7 +1481,7 @@ void __init kmem_cache_init(void) ...@@ -1481,7 +1481,7 @@ void __init kmem_cache_init(void)
list_add(&cache_cache.next, &cache_chain); list_add(&cache_cache.next, &cache_chain);
cache_cache.colour_off = cache_line_size(); cache_cache.colour_off = cache_line_size();
cache_cache.array[smp_processor_id()] = &initarray_cache.cache; cache_cache.array[smp_processor_id()] = &initarray_cache.cache;
cache_cache.nodelists[node] = &initkmem_list3[CACHE_CACHE]; cache_cache.nodelists[node] = &initkmem_list3[CACHE_CACHE + node];
/* /*
* struct kmem_cache size depends on nr_node_ids, which * struct kmem_cache size depends on nr_node_ids, which
...@@ -1602,7 +1602,7 @@ void __init kmem_cache_init(void) ...@@ -1602,7 +1602,7 @@ void __init kmem_cache_init(void)
int nid; int nid;
for_each_online_node(nid) { for_each_online_node(nid) {
init_list(&cache_cache, &initkmem_list3[CACHE_CACHE], nid); init_list(&cache_cache, &initkmem_list3[CACHE_CACHE + nid], nid);
init_list(malloc_sizes[INDEX_AC].cs_cachep, init_list(malloc_sizes[INDEX_AC].cs_cachep,
&initkmem_list3[SIZE_AC + nid], nid); &initkmem_list3[SIZE_AC + nid], nid);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册