if (!priv)
                return -ENOMEM;
 
-       ret = ida_simple_get(&alcor_pci_idr, 0, 0, GFP_KERNEL);
+       ret = ida_alloc(&alcor_pci_idr, GFP_KERNEL);
        if (ret < 0)
                return ret;
        priv->id = ret;
        ret = pci_request_regions(pdev, DRV_NAME_ALCOR_PCI);
        if (ret) {
                dev_err(&pdev->dev, "Cannot request region\n");
-               return -ENOMEM;
+               ret = -ENOMEM;
+               goto error_free_ida;
        }
 
        if (!(pci_resource_flags(pdev, bar) & IORESOURCE_MEM)) {
 
 error_release_regions:
        pci_release_regions(pdev);
+error_free_ida:
+       ida_free(&alcor_pci_idr, priv->id);
        return ret;
 }
 
 
        mfd_remove_devices(&pdev->dev);
 
-       ida_simple_remove(&alcor_pci_idr, priv->id);
+       ida_free(&alcor_pci_idr, priv->id);
 
        pci_release_regions(pdev);
        pci_set_drvdata(pdev, NULL);