Index: linux-2.6.18-rc1/mm/slab.c =================================================================== --- linux-2.6.18-rc1.orig/mm/slab.c 2006-07-11 22:27:03.604860712 -0700 +++ linux-2.6.18-rc1/mm/slab.c 2006-07-11 23:02:44.201977426 -0700 @@ -298,6 +298,7 @@ struct kmem_list3 { struct array_cache **alien; /* on other nodes */ unsigned long next_reap; /* updated without locking */ int free_touched; /* updated without locking */ + struct kmem_cache *cache; /* The cache that we belong to */ }; /* @@ -1116,6 +1117,7 @@ static int __devinit cpuup_callback(stru * go. cache_chain_mutex is sufficient * protection here. */ + l3->cache = cachep; cachep->nodelists[node] = l3; } @@ -1925,6 +1927,7 @@ static void setup_cpu_cache(struct kmem_ GFP_KERNEL, node); BUG_ON(!cachep->nodelists[node]); kmem_list3_init(cachep->nodelists[node]); + cachep->nodelists[node]->cache = cachep; } } } @@ -3491,7 +3494,7 @@ const char *kmem_cache_name(struct kmem_ EXPORT_SYMBOL_GPL(kmem_cache_name); /* - * This initializes kmem_list3 or resizes varioius caches for all nodes. + * This initializes kmem_list3 or resizes various caches for all nodes. */ static int alloc_kmemlist(struct kmem_cache *cachep) { @@ -3544,6 +3547,7 @@ static int alloc_kmemlist(struct kmem_ca } kmem_list3_init(l3); + l3->cache = cachep; l3->next_reap = jiffies + REAPTIMEOUT_LIST3 + ((unsigned long)cachep) % REAPTIMEOUT_LIST3; l3->shared = new_shared;