} else {
} else
static void sub_remove(struct idr *idp, int shift, int id){	struct idr_layer *p = idp->top;	struct idr_layer **pa[MAX_LEVEL];	struct idr_layer ***paa = &pa[0];	int n;	*paa = NULL;	*++paa = &idp->top;	while ((shift > 0) && p) {		n = (id >> shift) & IDR_MASK;		__clear_bit(n, &p->bitmap);		*++paa = &p->ary[n];		p = p->ary[n];		shift -= IDR_BITS;	}	n = id & IDR_MASK;	if (likely(p != NULL && test_bit(n, &p->bitmap))){		__clear_bit(n, &p->bitmap);		p->ary[n] = NULL;		while(*paa && ! --((**paa)->count)){			free_layer(idp, **paa);			**paa-- = NULL;		}		if ( ! *paa )			idp->layers = 0;	} else {		idr_remove_warning(id);	}}