summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinas Vepstas <linas@austin.ibm.com>2007-04-13 15:34:09 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2007-05-02 19:02:38 -0700
commit31be7586d1122538747519d786408f142f59dd46 (patch)
tree2afc171419c60084a142164b1da6ca17aeded4ef
parentfa1891596ca252e48e8803738fd8ead5b3082217 (diff)
downloadop-kernel-dev-31be7586d1122538747519d786408f142f59dd46.zip
op-kernel-dev-31be7586d1122538747519d786408f142f59dd46.tar.gz
PCI: rpaphp: match up alloc and free in same routine
The routine that called an alloc should be the same routine that calles the mathcing free, if anything in the middle failed. Signed-off-by: Linas Vepstas <linas@austin.ibm.com> Cc: John Rose <johnrose@austin.ibm.com> Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/pci/hotplug/rpaphp_core.c5
-rw-r--r--drivers/pci/hotplug/rpaphp_pci.c1
-rw-r--r--drivers/pci/hotplug/rpaphp_slot.c1
3 files changed, 5 insertions, 2 deletions
diff --git a/drivers/pci/hotplug/rpaphp_core.c b/drivers/pci/hotplug/rpaphp_core.c
index 3afd154..ca95e151 100644
--- a/drivers/pci/hotplug/rpaphp_core.c
+++ b/drivers/pci/hotplug/rpaphp_core.c
@@ -321,10 +321,15 @@ int rpaphp_add_slot(struct device_node *dn)
indexes[i + 1], name, type);
retval = rpaphp_register_pci_slot(slot);
+ if (retval)
+ dealloc_slot_struct(slot);
+
name += strlen(name) + 1;
type += strlen(type) + 1;
}
dbg("%s - Exit: rc[%d]\n", __FUNCTION__, retval);
+
+ /* XXX FIXME: reports a failure only if last entry in loop failed */
return retval;
}
diff --git a/drivers/pci/hotplug/rpaphp_pci.c b/drivers/pci/hotplug/rpaphp_pci.c
index 6f6cbed..a669ba3 100644
--- a/drivers/pci/hotplug/rpaphp_pci.c
+++ b/drivers/pci/hotplug/rpaphp_pci.c
@@ -195,7 +195,6 @@ static int setup_pci_slot(struct slot *slot)
}
return 0;
exit_rc:
- dealloc_slot_struct(slot);
return -EINVAL;
}
diff --git a/drivers/pci/hotplug/rpaphp_slot.c b/drivers/pci/hotplug/rpaphp_slot.c
index 907f130..dd1e275 100644
--- a/drivers/pci/hotplug/rpaphp_slot.c
+++ b/drivers/pci/hotplug/rpaphp_slot.c
@@ -184,7 +184,6 @@ int rpaphp_register_slot(struct slot *slot)
sysfs_fail:
pci_hp_deregister(php_slot);
register_fail:
- rpaphp_release_slot(php_slot);
return retval;
}
OpenPOWER on IntegriCloud