slabp = GET_PAGE_SLAB(virt_to_page(objp)); 
slabp = page_get_slab(virt_to_page(objp)); 
static inline void __cache_free(kmem_cache_t *cachep, void *objp){	struct array_cache *ac = ac_data(cachep);	check_irq_off();	objp = cache_free_debugcheck(cachep, objp, __builtin_return_address(0));	/* Make sure we are not freeing a object from another	 * node to the array cache on this cpu.	 */#ifdef CONFIG_NUMA	{		struct slab *slabp;		slabp = GET_PAGE_SLAB(virt_to_page(objp));		if (unlikely(slabp->nodeid != numa_node_id())) {			struct array_cache *alien = NULL;			int nodeid = slabp->nodeid;			struct kmem_list3 *l3 = cachep->nodelists[numa_node_id()];			STATS_INC_NODEFREES(cachep);			if (l3->alien && l3->alien[nodeid]) {				alien = l3->alien[nodeid];				spin_lock(&alien->lock);				if (unlikely(alien->avail == alien->limit))					__drain_alien_cache(cachep,							alien, nodeid);				alien->entry[alien->avail++] = objp;				spin_unlock(&alien->lock);			} else {				spin_lock(&(cachep->nodelists[nodeid])->						list_lock);				free_block(cachep, &objp, 1, nodeid);				spin_unlock(&(cachep->nodelists[nodeid])->						list_lock);			}			return;		}	}#endif	if (likely(ac->avail < ac->limit)) {		STATS_INC_FREEHIT(cachep);		ac->entry[ac->avail++] = objp;		return;	} else {		STATS_INC_FREEMISS(cachep);		cache_flusharray(cachep, ac);		ac->entry[ac->avail++] = objp;	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/065d41cb269e9debb18c6d5052e4de1088ae3d8f/slab.c/buggy/mm/slab.c