Skip to contentSkip to conversation

pcmcia: pd6729: call disable_pci_device() if pci_probe() failed

PATCH Superseded Kulikov Vasiliy 2 participants 2 messages Aug 6, 2010 – Aug 7, 2010

Subsystems (2)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 11/18 pcmcia: pd6729: call disable_pci_device() if pci_probe() failed

Driver should call disable_pci_device() if it returns from pci_probe() with error. Also it must not be called if pci_request_region() fails as it means that somebody uses device resources and rules the device.

---
 drivers/pcmcia/pd6729.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
drivers/pcmcia/pd6729.c +2 -2
index b8a869a..1858c3a 100644
@@ -646,7 +646,7 @@ static int __devinit pd6729_pci_probe(struct pci_dev *dev,
 	if (!pci_resource_start(dev, 0)) {
 		dev_warn(&dev->dev, "refusing to load the driver as the "
 			"io_base is NULL.\n");
-		goto err_out_free_mem;
+		goto err_out_disable;
 	}
 
 	dev_info(&dev->dev, "Cirrus PD6729 PCI to PCMCIA Bridge at 0x%llx "
@@ -666,7 +666,7 @@ static int __devinit pd6729_pci_probe(struct pci_dev *dev,
 	ret = pci_request_regions(dev, "pd6729");
 	if (ret) {
 		dev_warn(&dev->dev, "pci request region failed.\n");
-		goto err_out_disable;
+		goto err_out_free_mem;
 	}
 
 	if (dev->irq = NO_IRQ)
Signature · 1 line
1.7.0.4
#1 lore raw
Quoted 3 lines · Kulikov Vasiliy

Driver should call disable_pci_device() if it returns from pci_probe() with error. Also it must not be called if pci_request_region() fails as it means that somebody uses device resources and rules the device.

But that would mean that a driver first enables a device, then fails to make use of it, and then can't disable it? This doesn't look right to me. The first part of the patch looks fine, though.

Best,
Dominik

Quoted 31 lines
---
 drivers/pcmcia/pd6729.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
drivers/pcmcia/pd6729.c +2 -2
index b8a869a..1858c3a 100644
@@ -646,7 +646,7 @@ static int __devinit pd6729_pci_probe(struct pci_dev *dev,
 	if (!pci_resource_start(dev, 0)) {
 		dev_warn(&dev->dev, "refusing to load the driver as the "
 			"io_base is NULL.\n");
-		goto err_out_free_mem;
+		goto err_out_disable;
 	}
 
 	dev_info(&dev->dev, "Cirrus PD6729 PCI to PCMCIA Bridge at 0x%llx "
@@ -666,7 +666,7 @@ static int __devinit pd6729_pci_probe(struct pci_dev *dev,
 	ret = pci_request_regions(dev, "pd6729");
 	if (ret) {
 		dev_warn(&dev->dev, "pci request region failed.\n");
-		goto err_out_disable;
+		goto err_out_free_mem;
 	}
 
 	if (dev->irq = NO_IRQ)
Signature · 1 line
1.7.0.4