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:
parent
ff2b039919
commit
9f47981307
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue