struct array_cache *nc; 
/* setup the size64 kmemlist for cpu before we can * begin anything. Make sure some other cpu on this * node has not already allocated this */ if (!cachep->nodelists[node]) { if (!(l3 = kmalloc_node(memsize, GFP_KERNEL, node))) goto bad; kmem_list3_init(l3); l3->next_reap = jiffies + REAPTIMEOUT_LIST3 + ((unsigned long)cachep)%REAPTIMEOUT_LIST3; 
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