浏览代码

firewire: fw-ohci: missing PPC PMac feature calls in failure path

Balance ohci_pmac_on and ohci_pmac_off if pci_driver.probe fails.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Stefan Richter 17 年之前
父节点
当前提交
130d5496e2
共有 1 个文件被更改,包括 3 次插入2 次删除
  1. 3 2
      drivers/firewire/fw-ohci.c

+ 3 - 2
drivers/firewire/fw-ohci.c

@@ -2286,8 +2286,6 @@ pci_probe(struct pci_dev *dev, const struct pci_device_id *ent)
 	int err;
 	int err;
 	size_t size;
 	size_t size;
 
 
-	ohci_pmac_on(dev);
-
 	ohci = kzalloc(sizeof(*ohci), GFP_KERNEL);
 	ohci = kzalloc(sizeof(*ohci), GFP_KERNEL);
 	if (ohci == NULL) {
 	if (ohci == NULL) {
 		fw_error("Could not malloc fw_ohci data.\n");
 		fw_error("Could not malloc fw_ohci data.\n");
@@ -2296,6 +2294,8 @@ pci_probe(struct pci_dev *dev, const struct pci_device_id *ent)
 
 
 	fw_card_initialize(&ohci->card, &ohci_driver, &dev->dev);
 	fw_card_initialize(&ohci->card, &ohci_driver, &dev->dev);
 
 
+	ohci_pmac_on(dev);
+
 	err = pci_enable_device(dev);
 	err = pci_enable_device(dev);
 	if (err) {
 	if (err) {
 		fw_error("Failed to enable OHCI hardware.\n");
 		fw_error("Failed to enable OHCI hardware.\n");
@@ -2397,6 +2397,7 @@ pci_probe(struct pci_dev *dev, const struct pci_device_id *ent)
 	pci_disable_device(dev);
 	pci_disable_device(dev);
  fail_free:
  fail_free:
 	kfree(&ohci->card);
 	kfree(&ohci->card);
+	ohci_pmac_off(dev);
 
 
 	return err;
 	return err;
 }
 }