summaryrefslogtreecommitdiffstats
path: root/kernel/drivers/mcb
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/drivers/mcb')
-rw-r--r--kernel/drivers/mcb/mcb-core.c1
-rw-r--r--kernel/drivers/mcb/mcb-pci.c7
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: