if ( idp->top && idp->top->count == 1 && (idp->layers > 1) && idp->top->ary[0]){ 
if (idp->top && idp->top->count == 1 && (idp->layers > 1) && idp->top->ary[0]) { 
void idr_remove(struct idr *idp, int id){	struct idr_layer *p;	/* Mask off upper bits we don't use for the search. */	id &= MAX_ID_MASK;	sub_remove(idp, (idp->layers - 1) * IDR_BITS, id);	if ( idp->top && idp->top->count == 1 && 	     (idp->layers > 1) &&	     idp->top->ary[0]){  // We can drop a layer		p = idp->top->ary[0];		idp->top->bitmap = idp->top->count = 0;		free_layer(idp, idp->top);		idp->top = p;		--idp->layers;	}	while (idp->id_free_cnt >= IDR_FREE_MAX) {				p = alloc_layer(idp);		kmem_cache_free(idr_layer_cache, p);		return;	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/e15ae2dd3e436552293e122a5163019e7a0fa450/idr.c/buggy/lib/idr.c