diff options
author | Linas Vepstas <linas@austin.ibm.com> | 2007-04-13 18:34:09 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-05-02 22:02:38 -0400 |
commit | 31be7586d1122538747519d786408f142f59dd46 (patch) | |
tree | 2afc171419c60084a142164b1da6ca17aeded4ef | |
parent | fa1891596ca252e48e8803738fd8ead5b3082217 (diff) |
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.c | 5 | ||||
-rw-r--r-- | drivers/pci/hotplug/rpaphp_pci.c | 1 | ||||
-rw-r--r-- | drivers/pci/hotplug/rpaphp_slot.c | 1 |
3 files changed, 5 insertions, 2 deletions
diff --git a/drivers/pci/hotplug/rpaphp_core.c b/drivers/pci/hotplug/rpaphp_core.c index 3afd154bf5..ca95e1515d 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) | |||
321 | indexes[i + 1], name, type); | 321 | indexes[i + 1], name, type); |
322 | 322 | ||
323 | retval = rpaphp_register_pci_slot(slot); | 323 | retval = rpaphp_register_pci_slot(slot); |
324 | if (retval) | ||
325 | dealloc_slot_struct(slot); | ||
326 | |||
324 | name += strlen(name) + 1; | 327 | name += strlen(name) + 1; |
325 | type += strlen(type) + 1; | 328 | type += strlen(type) + 1; |
326 | } | 329 | } |
327 | dbg("%s - Exit: rc[%d]\n", __FUNCTION__, retval); | 330 | dbg("%s - Exit: rc[%d]\n", __FUNCTION__, retval); |
331 | |||
332 | /* XXX FIXME: reports a failure only if last entry in loop failed */ | ||
328 | return retval; | 333 | return retval; |
329 | } | 334 | } |
330 | 335 | ||
diff --git a/drivers/pci/hotplug/rpaphp_pci.c b/drivers/pci/hotplug/rpaphp_pci.c index 6f6cbede51..a669ba3f29 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) | |||
195 | } | 195 | } |
196 | return 0; | 196 | return 0; |
197 | exit_rc: | 197 | exit_rc: |
198 | dealloc_slot_struct(slot); | ||
199 | return -EINVAL; | 198 | return -EINVAL; |
200 | } | 199 | } |
201 | 200 | ||
diff --git a/drivers/pci/hotplug/rpaphp_slot.c b/drivers/pci/hotplug/rpaphp_slot.c index 907f1301f8..dd1e275a82 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) | |||
184 | sysfs_fail: | 184 | sysfs_fail: |
185 | pci_hp_deregister(php_slot); | 185 | pci_hp_deregister(php_slot); |
186 | register_fail: | 186 | register_fail: |
187 | rpaphp_release_slot(php_slot); | ||
188 | return retval; | 187 | return retval; |
189 | } | 188 | } |
190 | 189 | ||