On Thu, 21 Jan 2010, Alex Chiang wrote: > Here is another dump of dmesg. I tried to trim it a little bit > where it made sense. Looks like percpu data is corrupted. One of my earlier fixes dimensioned the kmem_cache_cpu array correctly. That is missing here. Combined fix: --- mm/slub.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) Index: linux-2.6/mm/slub.c =================================================================== --- linux-2.6.orig/mm/slub.c 2010-01-21 16:39:26.000000000 -0600 +++ linux-2.6/mm/slub.c 2010-01-21 16:40:35.000000000 -0600 @@ -2086,7 +2086,7 @@ init_kmem_cache_node(struct kmem_cache_n #endif } -static DEFINE_PER_CPU(struct kmem_cache_cpu, kmalloc_percpu[SLUB_PAGE_SHIFT]); +static DEFINE_PER_CPU(struct kmem_cache_cpu, kmalloc_percpu[KMALLOC_CACHES]); static inline int alloc_kmem_cache_cpus(struct kmem_cache *s, gfp_t flags) { @@ -2176,7 +2176,8 @@ static int init_kmem_cache_nodes(struct int node; int local_node; - if (slab_state >= UP) + if (slab_state >= UP && (s < kmalloc_caches || + s > kmalloc_caches + KMALLOC_CACHES)) local_node = page_to_nid(virt_to_page(s)); else local_node = 0; -- To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |