mirror of
https://github.com/torvalds/linux
synced 2024-09-06 18:01:05 +00:00
mm/cma_debug: correct size input to bitmap function
In CMA, 1 bit in bitmap means 1 << order_per_bits pages so size of bitmap is cma->count >> order_per_bits rather than just cma->count. This patch fixes it. Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com> Acked-by: Michal Nazarewicz <mina86@mina86.com> Cc: Sasha Levin <sasha.levin@oracle.com> Cc: Stefan Strogin <stefan.strogin@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
2292c0b1c4
commit
d56e84b406
|
@ -39,7 +39,7 @@ static int cma_used_get(void *data, u64 *val)
|
|||
|
||||
mutex_lock(&cma->lock);
|
||||
/* pages counter is smaller than sizeof(int) */
|
||||
used = bitmap_weight(cma->bitmap, (int)cma->count);
|
||||
used = bitmap_weight(cma->bitmap, (int)cma_bitmap_maxno(cma));
|
||||
mutex_unlock(&cma->lock);
|
||||
*val = (u64)used << cma->order_per_bit;
|
||||
|
||||
|
@ -52,13 +52,14 @@ static int cma_maxchunk_get(void *data, u64 *val)
|
|||
struct cma *cma = data;
|
||||
unsigned long maxchunk = 0;
|
||||
unsigned long start, end = 0;
|
||||
unsigned long bitmap_maxno = cma_bitmap_maxno(cma);
|
||||
|
||||
mutex_lock(&cma->lock);
|
||||
for (;;) {
|
||||
start = find_next_zero_bit(cma->bitmap, cma->count, end);
|
||||
start = find_next_zero_bit(cma->bitmap, bitmap_maxno, end);
|
||||
if (start >= cma->count)
|
||||
break;
|
||||
end = find_next_bit(cma->bitmap, cma->count, start);
|
||||
end = find_next_bit(cma->bitmap, bitmap_maxno, start);
|
||||
maxchunk = max(end - start, maxchunk);
|
||||
}
|
||||
mutex_unlock(&cma->lock);
|
||||
|
|
Loading…
Reference in a new issue