unsigned int chunk_bits;
        int err, i;
 
-       clt->permits_map = kcalloc(BITS_TO_LONGS(clt->queue_depth),
-                                  sizeof(long), GFP_KERNEL);
+       clt->permits_map = bitmap_zalloc(clt->queue_depth, GFP_KERNEL);
        if (!clt->permits_map) {
                err = -ENOMEM;
                goto out_err;
        return 0;
 
 err_map:
-       kfree(clt->permits_map);
+       bitmap_free(clt->permits_map);
        clt->permits_map = NULL;
 out_err:
        return err;
                wait_event(clt->permits_wait,
                           find_first_bit(clt->permits_map, sz) >= sz);
        }
-       kfree(clt->permits_map);
+       bitmap_free(clt->permits_map);
        clt->permits_map = NULL;
        kfree(clt->permits);
        clt->permits = NULL;