Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=31be7586d1122538747519d786408f142f59dd46
Commit:     31be7586d1122538747519d786408f142f59dd46
Parent:     fa1891596ca252e48e8803738fd8ead5b3082217
Author:     Linas Vepstas <[EMAIL PROTECTED]>
AuthorDate: Fri Apr 13 15:34:09 2007 -0700
Committer:  Greg Kroah-Hartman <[EMAIL PROTECTED]>
CommitDate: Wed May 2 19:02:38 2007 -0700

    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 <[EMAIL PROTECTED]>
    Cc: John Rose <[EMAIL PROTECTED]>
    Signed-off-by: Kristen Carlson Accardi <[EMAIL PROTECTED]>
    Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
---
 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(-)

diff --git a/drivers/pci/hotplug/rpaphp_core.c 
b/drivers/pci/hotplug/rpaphp_core.c
index 3afd154..ca95e15 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;
 }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to