{
        struct device *dev = &mfc_dev->plat_dev->dev;
        unsigned long mem_size = SZ_4M;
-       unsigned int bitmap_size;
 
        if (IS_ENABLED(CONFIG_DMA_CMA) || exynos_is_iommu_available(dev))
                mem_size = SZ_8M;
        if (mfc_mem_size)
                mem_size = memparse(mfc_mem_size, NULL);
 
-       bitmap_size = BITS_TO_LONGS(mem_size >> PAGE_SHIFT) * sizeof(long);
-
-       mfc_dev->mem_bitmap = kzalloc(bitmap_size, GFP_KERNEL);
+       mfc_dev->mem_bitmap = bitmap_zalloc(mem_size >> PAGE_SHIFT, GFP_KERNEL);
        if (!mfc_dev->mem_bitmap)
                return -ENOMEM;
 
        mfc_dev->mem_virt = dma_alloc_coherent(dev, mem_size,
                                               &mfc_dev->mem_base, GFP_KERNEL);
        if (!mfc_dev->mem_virt) {
-               kfree(mfc_dev->mem_bitmap);
+               bitmap_free(mfc_dev->mem_bitmap);
                dev_err(dev, "failed to preallocate %ld MiB for the firmware and context buffers\n",
                        (mem_size / SZ_1M));
                return -ENOMEM;
 
        dma_free_coherent(dev, mfc_dev->mem_size, mfc_dev->mem_virt,
                          mfc_dev->mem_base);
-       kfree(mfc_dev->mem_bitmap);
+       bitmap_free(mfc_dev->mem_bitmap);
        vb2_dma_contig_clear_max_seg_size(dev);
 }