summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMichael Neuling <mikey@neuling.org>2015-05-27 08:07:05 +0200
committerMichael Ellerman <mpe@ellerman.id.au>2015-06-03 05:27:17 +0200
commit7f436b534d5a2277b4826e252a6f622e7986bbd3 (patch)
tree8b5ce536ec020ff5aa97a67ee8412bf27b2c6f43 /drivers
parentcxl: Re-order card init to check the VSEC earlier (diff)
downloadlinux-7f436b534d5a2277b4826e252a6f622e7986bbd3.tar.xz
linux-7f436b534d5a2277b4826e252a6f622e7986bbd3.zip
cxl: Fix error path on probe
When probing we call pci_enable_device() but don't call pci_disable_device() on fail. This causes refcounting issues in the PCI subsystem if a second driver tries to bind to the same device. This patch adds the pci_disable_device() to the probe error path. This error path is hit when this cxl driver tries to bind to AFUs (on the vPHB) rather than the physical device. Signed-off-by: Michael Neuling <mikey@neuling.org> Acked-by: Ian Munsie <imunsie@au1.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/misc/cxl/pci.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/misc/cxl/pci.c b/drivers/misc/cxl/pci.c
index 787f966f4088..4a26e5fd52c1 100644
--- a/drivers/misc/cxl/pci.c
+++ b/drivers/misc/cxl/pci.c
@@ -1138,6 +1138,7 @@ static int cxl_probe(struct pci_dev *dev, const struct pci_device_id *id)
adapter = cxl_init_adapter(dev);
if (IS_ERR(adapter)) {
dev_err(&dev->dev, "cxl_init_adapter failed: %li\n", PTR_ERR(adapter));
+ pci_disable_device(dev);
return PTR_ERR(adapter);
}