genalloc: Correct nbytes calculation on long boundary

In existing code we calculate nbytes based on the byte
boundary, but genalloc uses bitmap for maintaining the
memory allocation aligned to long. So while calculating
nbytes we end up getting wrong nbytes.
example: lets say nbytes comes to 9 bytes for 70 bits when
bytes aligned,but if long aligned we will have 3 long words
i.e 12 bytes. This difference may lead to choosing the
wrong api for freeing the memory i.e Between kfree() and
vfree().

Change-Id: I942caf59e25515c780896b328b912604df9e10bf
Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
This commit is contained in:
Sunil Khatri 2014-02-13 19:52:09 +05:30 committed by Hareesh Gundu
parent ff2b039919
commit 9f47981307
1 changed files with 1 additions and 1 deletions

View File

@ -251,7 +251,7 @@ void gen_pool_destroy(struct gen_pool *pool)
end_bit = (chunk->end_addr - chunk->start_addr) >> order;
nbytes = sizeof(struct gen_pool_chunk) +
(end_bit + BITS_PER_BYTE - 1) / BITS_PER_BYTE;
BITS_TO_LONGS(end_bit) * sizeof(long);
bit = find_next_bit(chunk->bits, end_bit, 0);
BUG_ON(bit < end_bit);