]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - mm/cma.c
Merge tag 'y2038-alsa-v8-signed' of git://git.kernel.org:/pub/scm/linux/kernel/git...
[linux.git] / mm / cma.c
index 7fe0b8356775f43dd2cae06e9ca7e02e93765923..be55d1988c6754bdb582057ae663eaca0791de0e 100644 (file)
--- a/mm/cma.c
+++ b/mm/cma.c
@@ -95,13 +95,11 @@ static void cma_clear_bitmap(struct cma *cma, unsigned long pfn,
 
 static int __init cma_activate_area(struct cma *cma)
 {
-       int bitmap_size = BITS_TO_LONGS(cma_bitmap_maxno(cma)) * sizeof(long);
        unsigned long base_pfn = cma->base_pfn, pfn = base_pfn;
        unsigned i = cma->count >> pageblock_order;
        struct zone *zone;
 
-       cma->bitmap = kzalloc(bitmap_size, GFP_KERNEL);
-
+       cma->bitmap = bitmap_zalloc(cma_bitmap_maxno(cma), GFP_KERNEL);
        if (!cma->bitmap) {
                cma->count = 0;
                return -ENOMEM;
@@ -139,7 +137,7 @@ static int __init cma_activate_area(struct cma *cma)
 
 not_in_zone:
        pr_err("CMA area %s could not be activated\n", cma->name);
-       kfree(cma->bitmap);
+       bitmap_free(cma->bitmap);
        cma->count = 0;
        return -EINVAL;
 }