| From kristen.c.accardi@intel.com Fri Apr 13 15:34:19 2007 |
| From: Linas Vepstas <linas@austin.ibm.com> |
| Date: Fri, 13 Apr 2007 15:34:09 -0700 |
| Subject: [patch 03/21] PCI: rpaphp: match up alloc and free in same routine |
| To: gregkh@suse.de |
| Message-ID: <20070413223418.955980105@intel.com> |
| Content-Disposition: inline; filename=pci-rpaphp-match-up-alloc-and-free-in-same-routine |
| |
| From: Linas Vepstas <linas@austin.ibm.com> |
| |
| 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> |
| |
| --- |
| drivers/pci/hotplug/rpaphp_core.c | 5 +++++ |
| drivers/pci/hotplug/rpaphp_pci.c | 1 - |
| drivers/pci/hotplug/rpaphp_slot.c | 1 - |
| 3 files changed, 5 insertions(+), 2 deletions(-) |
| |
| --- 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 * |
| 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; |
| } |
| |
| --- 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 *s |
| } |
| return 0; |
| exit_rc: |
| - dealloc_slot_struct(slot); |
| return -EINVAL; |
| } |
| |
| --- a/drivers/pci/hotplug/rpaphp_slot.c |
| +++ b/drivers/pci/hotplug/rpaphp_slot.c |
| @@ -184,7 +184,6 @@ int rpaphp_register_slot(struct slot *sl |
| sysfs_fail: |
| pci_hp_deregister(php_slot); |
| register_fail: |
| - rpaphp_release_slot(php_slot); |
| return retval; |
| } |
| |