History

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.

Joonsoo Kim committed 11 years ago

Commit d56e84b1 parent 2292c0b1 file · +4 −3Browse files

Unified · Split

mm/cma_debug.c+4−3
@@ -39,7 +39,7 @@ static int cma_used_get(void *data, u64 *val) · 38 unmodified lines
3939
4040 mutex_lock(&cma->lock);
4141 /* pages counter is smaller than sizeof(int) */
42− used = bitmap_weight(cma->bitmap, (int)cma->count);
42+ used = bitmap_weight(cma->bitmap, (int)cma_bitmap_maxno(cma));
4343 mutex_unlock(&cma->lock);
4444 *val = (u64)used << cma->order_per_bit;
4545
@@ -52,13 +52,14 @@ static int cma_maxchunk_get(void *data, u64 *val) · 6 unmodified lines
5252 struct cma *cma = data;
5353 unsigned long maxchunk = 0;
5454 unsigned long start, end = 0;
55+ unsigned long bitmap_maxno = cma_bitmap_maxno(cma);
5556
5657 mutex_lock(&cma->lock);
5758 for (;;) {
58− start = find_next_zero_bit(cma->bitmap, cma->count, end);
59+ start = find_next_zero_bit(cma->bitmap, bitmap_maxno, end);
5960 if (start >= cma->count)
6061 break;
61− end = find_next_bit(cma->bitmap, cma->count, start);
62+ end = find_next_bit(cma->bitmap, bitmap_maxno, start);
6263 maxchunk = max(end - start, maxchunk);
6364 }
6465 mutex_unlock(&cma->lock);