s = roundup_pow_of_two(size); 
i = fls(size - 1); s = 1 << i; i -= ALLOC_MIN_SHIFT; 
void gen_pool_free(struct gen_pool *poolp, unsigned long ptr, int size){	struct gen_pool_link *q;	struct gen_pool_link *h = poolp->h;	unsigned long a, b, flags;	int i, s, max_chunk_size;	max_chunk_size = 1 << poolp->max_chunk_shift;	if (size > max_chunk_size)		return;	i = 0;	size = max(size, 1 << ALLOC_MIN_SHIFT);	s = roundup_pow_of_two(size);	a = ptr;	spin_lock_irqsave(&poolp->lock, flags);	while (1) {		if (s == max_chunk_size) {			((struct gen_pool_link *)a)->next = h[i].next;			h[i].next = (struct gen_pool_link *)a;			break;		}		b = a ^ s;		q = &h[i];		while (q->next && q->next != (struct gen_pool_link *)b)			q = q->next;		if (!q->next) {			((struct gen_pool_link *)a)->next = h[i].next;			h[i].next = (struct gen_pool_link *)a;			break;		}		q->next = q->next->next;		a = a & b;		s <<= 1;		i++;	}	spin_unlock_irqrestore(&poolp->lock, flags);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/46596338a10a54550ff03a6f60c28145a080296b/genalloc.c/clean/lib/genalloc.c