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-rc3/mm/slab.c =================================================================== --- linux-2.6.18-rc3.orig/mm/slab.c 2006-08-03 22:58:30.853796134 -0700 +++ linux-2.6.18-rc3/mm/slab.c 2006-08-03 23:00:05.252253747 -0700 @@ -1042,14 +1042,14 @@ 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; 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); @@ -1093,7 +1093,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) @@ -1253,7 +1253,7 @@ static int __devinit cpuup_callback(stru kfree(shared); if (alien) { - drain_alien_cache(cachep, alien); + drain_alien_cache(cachep, l3); free_alien_cache(l3); } free_array_cache: @@ -2303,7 +2303,7 @@ static void drain_cpu_caches(struct kmem for_each_online_node(node) { l3 = cachep->nodelists[node]; if (l3 && l3->alien) - drain_alien_cache(cachep, l3->alien); + drain_alien_cache(cachep, l3); } for_each_online_node(node) {