From: Matthew Wilcox Date: Tue, 12 Feb 2019 18:48:38 +0000 (-0500) Subject: rtsx_pcr: Convert to IDA X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=0f8c16dd50546c4f69b4c6c2fec402500181e02f;p=users%2Fwilly%2Fxarray.git rtsx_pcr: Convert to IDA Signed-off-by: Matthew Wilcox --- diff --git a/drivers/misc/cardreader/rtsx_pcr.c b/drivers/misc/cardreader/rtsx_pcr.c index b4a66b64f742..d376a204c948 100644 --- a/drivers/misc/cardreader/rtsx_pcr.c +++ b/drivers/misc/cardreader/rtsx_pcr.c @@ -27,8 +27,7 @@ static bool msi_en = true; module_param(msi_en, bool, S_IRUGO | S_IWUSR); MODULE_PARM_DESC(msi_en, "Enable MSI"); -static DEFINE_IDR(rtsx_pci_idr); -static DEFINE_SPINLOCK(rtsx_pci_lock); +static DEFINE_IDA(rtsx_ids); static struct mfd_cell rtsx_pcr_cells[] = { [RTSX_SD_CARD] = { @@ -1466,16 +1465,11 @@ 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 = ida_alloc(&rtsx_ids, GFP_KERNEL); if (ret < 0) goto free_handle; + pcr->id = ret; pcr->pci = pcidev; dev_set_drvdata(&pcidev->dev, handle); @@ -1586,9 +1580,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); + ida_free(&rtsx_ids, pcr->id); kfree(pcr->slots); kfree(pcr);