diff options
Diffstat (limited to 'kernel/drivers/mcb')
-rw-r--r-- | kernel/drivers/mcb/mcb-core.c | 1 | ||||
-rw-r--r-- | kernel/drivers/mcb/mcb-pci.c | 7 |
2 files changed, 6 insertions, 2 deletions
diff --git a/kernel/drivers/mcb/mcb-core.c b/kernel/drivers/mcb/mcb-core.c index 9018ab835..a4be45107 100644 --- a/kernel/drivers/mcb/mcb-core.c +++ b/kernel/drivers/mcb/mcb-core.c @@ -409,6 +409,7 @@ static int mcb_init(void) static void mcb_exit(void) { + ida_destroy(&mcb_ida); bus_unregister(&mcb_bus_type); } diff --git a/kernel/drivers/mcb/mcb-pci.c b/kernel/drivers/mcb/mcb-pci.c index de36237d7..67d5e7d08 100644 --- a/kernel/drivers/mcb/mcb-pci.c +++ b/kernel/drivers/mcb/mcb-pci.c @@ -51,6 +51,7 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) priv->mapbase = pci_resource_start(pdev, 0); if (!priv->mapbase) { dev_err(&pdev->dev, "No PCI resource\n"); + ret = -ENODEV; goto out_disable; } @@ -74,7 +75,7 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) ret = -ENOTSUPP; dev_err(&pdev->dev, "IO mapped PCI devices are not supported\n"); - goto out_release; + goto out_iounmap; } pci_set_drvdata(pdev, priv); @@ -89,7 +90,7 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) ret = chameleon_parse_cells(priv->bus, priv->mapbase, priv->base); if (ret < 0) - goto out_iounmap; + goto out_mcb_bus; num_cells = ret; dev_dbg(&pdev->dev, "Found %d cells\n", num_cells); @@ -98,6 +99,8 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) return 0; +out_mcb_bus: + mcb_release_bus(priv->bus); out_iounmap: iounmap(priv->base); out_release: |