Messages in this thread Patch in this message | | | From | Duck <> | Subject | [PATCH] generic pool allocator: allow all chunks to be allocated. | Date | Wed, 16 Apr 2008 06:33:10 -0600 |
| |
From: Bruce Schmid <duck@freescale.com>
gen_pool_alloc() doesn't allocate the last chunk in a pool. This patch fixes that problem by correcting the calculation of the number of the last bit in the bitmap.
Cc: Dean Nelson <dcn@sgi.com> Signed-off-by: Bruce Schmid <duck@freescale.com> --- lib/genalloc.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/lib/genalloc.c b/lib/genalloc.c index f6d276d..ac00492 100644 --- a/lib/genalloc.c +++ b/lib/genalloc.c @@ -127,7 +127,7 @@ unsigned long gen_pool_alloc(struct gen_pool *pool, size_t size) chunk = list_entry(_chunk, struct gen_pool_chunk, next_chunk); end_bit = (chunk->end_addr - chunk->start_addr) >> order; - end_bit -= nbits + 1; + end_bit -= (nbits - 1); spin_lock_irqsave(&chunk->lock, flags); bit = -1; -- 1.5.4
| |