aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoonsoo Kim <js1304@gmail.com>2015-07-17 19:24:23 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-07-17 19:39:54 -0400
commitd56e84b4064d65285161d6bfa04382e1cdd4e49c (patch)
treeed35ca7cffee972c75be915ca25298dfeea0c78c
parent2292c0b1c4a24da54e29b3cf0645b4a4d9c3f2c7 (diff)
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>
-rw-r--r--mm/cma_debug.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/mm/cma_debug.c b/mm/cma_debug.c
index 22190a7fd58e..f8e4b60db167 100644
--- a/mm/cma_debug.c
+++ b/mm/cma_debug.c
@@ -39,7 +39,7 @@ static int cma_used_get(void *data, u64 *val)
39 39
40 mutex_lock(&cma->lock); 40 mutex_lock(&cma->lock);
41 /* pages counter is smaller than sizeof(int) */ 41 /* 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));
43 mutex_unlock(&cma->lock); 43 mutex_unlock(&cma->lock);
44 *val = (u64)used << cma->order_per_bit; 44 *val = (u64)used << cma->order_per_bit;
45 45
@@ -52,13 +52,14 @@ static int cma_maxchunk_get(void *data, u64 *val)
52 struct cma *cma = data; 52 struct cma *cma = data;
53 unsigned long maxchunk = 0; 53 unsigned long maxchunk = 0;
54 unsigned long start, end = 0; 54 unsigned long start, end = 0;
55 unsigned long bitmap_maxno = cma_bitmap_maxno(cma);
55 56
56 mutex_lock(&cma->lock); 57 mutex_lock(&cma->lock);
57 for (;;) { 58 for (;;) {
58 start = find_next_zero_bit(cma->bitmap, cma->count, end); 59 start = find_next_zero_bit(cma->bitmap, bitmap_maxno, end);
59 if (start >= cma->count) 60 if (start >= cma->count)
60 break; 61 break;
61 end = find_next_bit(cma->bitmap, cma->count, start); 62 end = find_next_bit(cma->bitmap, bitmap_maxno, start);
62 maxchunk = max(end - start, maxchunk); 63 maxchunk = max(end - start, maxchunk);
63 } 64 }
64 mutex_unlock(&cma->lock); 65 mutex_unlock(&cma->lock);