slab: make alien cache draining take a l3 argument. The alien cache can always be determined based on the l3 pointer. Signed-off-by: Christoph Lameter Index: linux-2.6.18-rc4/mm/slab.c =================================================================== --- linux-2.6.18-rc4.orig/mm/slab.c 2006-08-08 16:16:31.352380540 -0700 +++ linux-2.6.18-rc4/mm/slab.c 2006-08-08 16:18:33.629005636 -0700 @@ -1042,17 +1042,17 @@ static void reap_alien(struct kmem_cache } static void drain_alien_cache(struct kmem_cache *cachep, - struct array_cache **alien) + struct kmem_list3 *l3) { int i = 0; struct array_cache *ac; unsigned long flags; - if (alien) + if (l3->alien) return; for_each_online_node(i) { - ac = alien[i]; + ac = l3->alien[i]; if (ac) { spin_lock_irqsave(&ac->lock, flags); __drain_alien_cache(cachep, ac, i); @@ -1096,7 +1096,7 @@ static inline int cache_free_alien(struc #else -#define drain_alien_cache(cachep, alien) do { } while (0) +#define drain_alien_cache(cachep, l3) do { } while (0) #define reap_alien(cachep, l3) do { } while (0) static inline void alloc_alien_cache(struct kmem_list3 *l3, int node) @@ -1257,7 +1257,7 @@ static int __cpuinit cpuup_callback(stru kfree(shared); if (alien) { - drain_alien_cache(cachep, alien); + drain_alien_cache(cachep, l3); free_alien_cache(l3); } free_array_cache: @@ -2307,7 +2307,7 @@ static void drain_cpu_caches(struct kmem for_each_online_node(node) { l3 = cachep->nodelists[node]; if (l3) - drain_alien_cache(cachep, l3->alien); + drain_alien_cache(cachep, l3); } for_each_online_node(node) {