@@ -1191,15 +1191,10 @@ static int rtsx_pci_probe(struct pci_dev *pcidev,
}
handle->pcr = pcr;
- idr_preload(GFP_KERNEL);
- spin_lock(&rtsx_pci_lock);
- ret = idr_alloc(&rtsx_pci_idr, pcr, 0, 0, GFP_NOWAIT);
- if (ret >= 0)
- pcr->id = ret;
- spin_unlock(&rtsx_pci_lock);
- idr_preload_end();
+ ret = idr_get_index(&rtsx_pci_idr, &rtsc_pci_lock, pcr);
if (ret < 0)
goto free_handle;
+ pcr->id = ret;
pcr->pci = pcidev;
dev_set_drvdata(&pcidev->dev, handle);
@@ -1311,9 +1306,7 @@ static void rtsx_pci_remove(struct pci_dev *pcidev)
pci_release_regions(pcidev);
pci_disable_device(pcidev);
- spin_lock(&rtsx_pci_lock);
- idr_remove(&rtsx_pci_idr, pcr->id);
- spin_unlock(&rtsx_pci_lock);
+ idr_put_index(&rtsx_pci_idr, &rtsx_pci_lock, pcr->id);
kfree(pcr->slots);
kfree(pcr);
Signed-off-by: Lee Duncan <lduncan@suse.com> --- drivers/mfd/rtsx_pcr.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-)