ChangeSet 1.1587.12.66, 2004/04/30 15:03:58-07:00, eike-hotplug@sf-tec.de

[PATCH] RPA PCI Hotplug: use goto for error handling in rpaphp_slot.c

Convert rpaphp_slot.c::alloc_slot_struct to use goto for error handling. Also
some small coding style fixes.


 drivers/pci/hotplug/rpaphp_slot.c |   64 +++++++++++++++++++-------------------
 1 files changed, 32 insertions(+), 32 deletions(-)


diff -Nru a/drivers/pci/hotplug/rpaphp_slot.c b/drivers/pci/hotplug/rpaphp_slot.c
--- a/drivers/pci/hotplug/rpaphp_slot.c	Mon May 17 16:59:09 2004
+++ b/drivers/pci/hotplug/rpaphp_slot.c	Mon May 17 16:59:09 2004
@@ -80,54 +80,52 @@
 {
 	struct slot *slot;
 	
-	dbg("Enter alloc_slot_struct(): dn->full_name=%s drc_index=0x%x drc_name=%s\n",
-		dn->full_name, drc_index, drc_name);
+	dbg("Enter %s: dn->full_name=%s drc_index=0x%x drc_name=%s\n",
+		__FUNCTION__, dn->full_name, drc_index, drc_name);
 
 	slot = kmalloc(sizeof (struct slot), GFP_KERNEL);
 	if (!slot)
-		return (NULL);
+		goto error_nomem;
 	memset(slot, 0, sizeof (struct slot));
 	slot->hotplug_slot = kmalloc(sizeof (struct hotplug_slot), GFP_KERNEL);
-	if (!slot->hotplug_slot) {
-		kfree(slot);
-		return (NULL);
-	}
+	if (!slot->hotplug_slot)
+		goto error_hpslot;
 	memset(slot->hotplug_slot, 0, sizeof (struct hotplug_slot));
 	slot->hotplug_slot->info = kmalloc(sizeof (struct hotplug_slot_info),
 					   GFP_KERNEL);
-	if (!slot->hotplug_slot->info) {
-		kfree(slot->hotplug_slot);
-		kfree(slot);
-		return (NULL);
-	}
+	if (!slot->hotplug_slot->info)
+		goto error_hoslot;
 	memset(slot->hotplug_slot->info, 0, sizeof (struct hotplug_slot_info));
 	slot->hotplug_slot->name = kmalloc(BUS_ID_SIZE + 1, GFP_KERNEL);
-	if (!slot->hotplug_slot->name) {
-		kfree(slot->hotplug_slot->info);
-		kfree(slot->hotplug_slot);
-		kfree(slot);
-		return (NULL);
-	}
+	if (!slot->hotplug_slot->name)
+		goto error_name;
 	slot->location = kmalloc(strlen(drc_name) + 1, GFP_KERNEL);
-	if (!slot->location) {
-		kfree(slot->hotplug_slot->info);
-		kfree(slot->hotplug_slot->name);
-		kfree(slot->hotplug_slot);
-		kfree(slot);
-		return (NULL);
-	}
+	if (!slot->location)
+		goto error_info;
 	slot->name = slot->hotplug_slot->name;
 	slot->dn = dn;
 	slot->index = drc_index;
 	strcpy(slot->location, drc_name);
 	slot->power_domain = power_domain;
-	slot->magic = SLOT_MAGIC;
 	slot->hotplug_slot->private = slot;
 	slot->hotplug_slot->ops = &rpaphp_hotplug_slot_ops;
 	slot->hotplug_slot->release = &rpaphp_release_slot;
-	dbg("Exit alloc_slot_struct(): slot->dn->full_name=%s drc_index=0x%x drc_name=%s\n",
-		slot->dn->full_name, slot->index, slot->name);
-	return (slot);
+	slot->hotplug_slot->info->cur_bus_speed = PCI_SPEED_UNKNOWN;
+	dbg("Exit %s: slot->dn->full_name=%s drc_index=0x%x drc_name=%s\n",
+		__FUNCTION__, slot->dn->full_name, slot->index, slot->name);
+
+	return slot;
+
+error_info:
+	kfree(slot->hotplug_slot->info);
+error_name:
+	kfree(slot->hotplug_slot->name);
+error_hpslot:
+	kfree(slot->hotplug_slot);
+error_slot:
+	kfree(slot);
+error_nomem:
+	return NULL;
 }
 
 int register_slot(struct slot *slot)
@@ -135,13 +133,15 @@
 	int retval;
 	char *vio_uni_addr = NULL;
 
-	dbg("%s registering slot:path[%s] index[%x], name[%s] pdomain[%x] type[%d]\n", __FUNCTION__, slot->dn->full_name, slot->index, slot->name, slot->power_domain, slot->type);
+	dbg("%s registering slot:path[%s] index[%x], name[%s] pdomain[%x] type[%d]\n",
+		__FUNCTION__, slot->dn->full_name, slot->index, slot->name,
+		slot->power_domain, slot->type);
 
 	retval = pci_hp_register(slot->hotplug_slot);
 	if (retval) {
 		err("pci_hp_register failed with error %d\n", retval);
 		rpaphp_release_slot(slot->hotplug_slot);
-		return (retval);
+		return retval;
 	}
 	
 	/* create "phy_locatoin" file */
@@ -160,7 +160,7 @@
 		info("Slot [%s](bus_id=%s) registered\n",
 		     slot->name, pci_name(slot->bridge));
 	num_slots++;
-	return (0);
+	return 0;
 }
 
 int rpaphp_get_power_status(struct slot *slot, u8 * value)