static void hpsa_free_cmd_pool(struct ctlr_info *h)
 {
-       kfree(h->cmd_pool_bits);
+       bitmap_free(h->cmd_pool_bits);
        h->cmd_pool_bits = NULL;
        if (h->cmd_pool) {
                dma_free_coherent(&h->pdev->dev,
 
 static int hpsa_alloc_cmd_pool(struct ctlr_info *h)
 {
-       h->cmd_pool_bits = kcalloc(DIV_ROUND_UP(h->nr_cmds, BITS_PER_LONG),
-                                  sizeof(unsigned long),
-                                  GFP_KERNEL);
+       h->cmd_pool_bits = bitmap_zalloc(h->nr_cmds, GFP_KERNEL);
        h->cmd_pool = dma_alloc_coherent(&h->pdev->dev,
                    h->nr_cmds * sizeof(*h->cmd_pool),
                    &h->cmd_pool_dhandle, GFP_KERNEL);