static void free_block(kmem_cache_t *cachep, void **objpp, int nr_objects) 
static void free_block(kmem_cache_t *cachep, void **objpp, int nr_objects, int node) 
static void free_block(kmem_cache_t *cachep, void **objpp, int nr_objects){	int i;	struct kmem_list3 *l3;	for (i = 0; i < nr_objects; i++) {		void *objp = objpp[i];		struct slab *slabp;		unsigned int objnr;		int nodeid = 0;		slabp = GET_PAGE_SLAB(virt_to_page(objp));		nodeid = slabp->nodeid;		l3 = cachep->nodelists[nodeid];		list_del(&slabp->list);		objnr = (objp - slabp->s_mem) / cachep->objsize;		check_spinlock_acquired_node(cachep, nodeid);		check_slabp(cachep, slabp);#if DEBUG		if (slab_bufctl(slabp)[objnr] != BUFCTL_FREE) {			printk(KERN_ERR "slab: double free detected in cache "					"'%s', objp %p\n", cachep->name, objp);			BUG();		}#endif		slab_bufctl(slabp)[objnr] = slabp->free;		slabp->free = objnr;		STATS_DEC_ACTIVE(cachep);		slabp->inuse--;		l3->free_objects++;		check_slabp(cachep, slabp);		/* fixup slab chains */		if (slabp->inuse == 0) {			if (l3->free_objects > l3->free_limit) {				l3->free_objects -= cachep->num;				slab_destroy(cachep, slabp);			} else {				list_add(&slabp->list, &l3->slabs_free);			}		} else {			/* Unconditionally move a slab to the end of the			 * partial list on free - maximum time for the			 * other objects to be freed, too.			 */			list_add_tail(&slabp->list, &l3->slabs_partial);		}	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/ff69416e6323fe9d38c42a06ebdefeb58bbe9336/slab.c/clean/mm/slab.c