nc = alloc_arraycache(cpu, cachep->limit, cachep->batchcount); 
cachep->nodelists[node] = l3; }  spin_lock_irq(&cachep->nodelists[node]->list_lock); cachep->nodelists[node]->free_limit = (1 + nr_cpus_node(node)) * cachep->batchcount + cachep->num; spin_unlock_irq(&cachep->nodelists[node]->list_lock); }  /* Now we can go ahead with allocating the shared array's & array cache's */ list_for_each_entry(cachep, &cache_chain, next) { nc = alloc_arraycache(node, cachep->limit, cachep->batchcount); 
static int __devinit cpuup_callback(struct notifier_block *nfb,				  unsigned long action, void *hcpu){	long cpu = (long)hcpu;	kmem_cache_t* cachep;	switch (action) {	case CPU_UP_PREPARE:		down(&cache_chain_sem);		list_for_each_entry(cachep, &cache_chain, next) {			struct array_cache *nc;			nc = alloc_arraycache(cpu, cachep->limit, cachep->batchcount);			if (!nc)				goto bad;			spin_lock_irq(&cachep->spinlock);			cachep->array[cpu] = nc;			cachep->free_limit = (1+num_online_cpus())*cachep->batchcount						+ cachep->num;			spin_unlock_irq(&cachep->spinlock);		}		up(&cache_chain_sem);		break;	case CPU_ONLINE:		start_cpu_timer(cpu);		break;#ifdef CONFIG_HOTPLUG_CPU	case CPU_DEAD:		/* fall thru */	case CPU_UP_CANCELED:		down(&cache_chain_sem);		list_for_each_entry(cachep, &cache_chain, next) {			struct array_cache *nc;			spin_lock_irq(&cachep->spinlock);			/* cpu is dead; no one can alloc from it. */			nc = cachep->array[cpu];			cachep->array[cpu] = NULL;			cachep->free_limit -= cachep->batchcount;			free_block(cachep, ac_entry(nc), nc->avail);			spin_unlock_irq(&cachep->spinlock);			kfree(nc);		}		up(&cache_chain_sem);		break;#endif	}	return NOTIFY_OK;bad:	up(&cache_chain_sem);	return NOTIFY_BAD;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/e498be7dafd72fd68848c1eef1575aa7c5d658df/slab.c/buggy/mm/slab.c