Commit 35b2cbab authored by Rolf Eike Beer's avatar Rolf Eike Beer Committed by Deepak Saxena

[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.
parent 42d83392
......@@ -80,54 +80,52 @@ struct slot *alloc_slot_struct(struct device_node *dn, int drc_index, char *drc_
{
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 register_slot(struct slot *slot)
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 @@ int register_slot(struct slot *slot)
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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment