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_ ...@@ -80,54 +80,52 @@ struct slot *alloc_slot_struct(struct device_node *dn, int drc_index, char *drc_
{ {
struct slot *slot; struct slot *slot;
dbg("Enter alloc_slot_struct(): dn->full_name=%s drc_index=0x%x drc_name=%s\n", dbg("Enter %s: dn->full_name=%s drc_index=0x%x drc_name=%s\n",
dn->full_name, drc_index, drc_name); __FUNCTION__, dn->full_name, drc_index, drc_name);
slot = kmalloc(sizeof (struct slot), GFP_KERNEL); slot = kmalloc(sizeof (struct slot), GFP_KERNEL);
if (!slot) if (!slot)
return (NULL); goto error_nomem;
memset(slot, 0, sizeof (struct slot)); memset(slot, 0, sizeof (struct slot));
slot->hotplug_slot = kmalloc(sizeof (struct hotplug_slot), GFP_KERNEL); slot->hotplug_slot = kmalloc(sizeof (struct hotplug_slot), GFP_KERNEL);
if (!slot->hotplug_slot) { if (!slot->hotplug_slot)
kfree(slot); goto error_hpslot;
return (NULL);
}
memset(slot->hotplug_slot, 0, sizeof (struct hotplug_slot)); memset(slot->hotplug_slot, 0, sizeof (struct hotplug_slot));
slot->hotplug_slot->info = kmalloc(sizeof (struct hotplug_slot_info), slot->hotplug_slot->info = kmalloc(sizeof (struct hotplug_slot_info),
GFP_KERNEL); GFP_KERNEL);
if (!slot->hotplug_slot->info) { if (!slot->hotplug_slot->info)
kfree(slot->hotplug_slot); goto error_hoslot;
kfree(slot);
return (NULL);
}
memset(slot->hotplug_slot->info, 0, sizeof (struct hotplug_slot_info)); memset(slot->hotplug_slot->info, 0, sizeof (struct hotplug_slot_info));
slot->hotplug_slot->name = kmalloc(BUS_ID_SIZE + 1, GFP_KERNEL); slot->hotplug_slot->name = kmalloc(BUS_ID_SIZE + 1, GFP_KERNEL);
if (!slot->hotplug_slot->name) { if (!slot->hotplug_slot->name)
kfree(slot->hotplug_slot->info); goto error_name;
kfree(slot->hotplug_slot);
kfree(slot);
return (NULL);
}
slot->location = kmalloc(strlen(drc_name) + 1, GFP_KERNEL); slot->location = kmalloc(strlen(drc_name) + 1, GFP_KERNEL);
if (!slot->location) { if (!slot->location)
kfree(slot->hotplug_slot->info); goto error_info;
kfree(slot->hotplug_slot->name);
kfree(slot->hotplug_slot);
kfree(slot);
return (NULL);
}
slot->name = slot->hotplug_slot->name; slot->name = slot->hotplug_slot->name;
slot->dn = dn; slot->dn = dn;
slot->index = drc_index; slot->index = drc_index;
strcpy(slot->location, drc_name); strcpy(slot->location, drc_name);
slot->power_domain = power_domain; slot->power_domain = power_domain;
slot->magic = SLOT_MAGIC;
slot->hotplug_slot->private = slot; slot->hotplug_slot->private = slot;
slot->hotplug_slot->ops = &rpaphp_hotplug_slot_ops; slot->hotplug_slot->ops = &rpaphp_hotplug_slot_ops;
slot->hotplug_slot->release = &rpaphp_release_slot; 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->hotplug_slot->info->cur_bus_speed = PCI_SPEED_UNKNOWN;
slot->dn->full_name, slot->index, slot->name); dbg("Exit %s: slot->dn->full_name=%s drc_index=0x%x drc_name=%s\n",
return (slot); __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) int register_slot(struct slot *slot)
...@@ -135,13 +133,15 @@ int register_slot(struct slot *slot) ...@@ -135,13 +133,15 @@ int register_slot(struct slot *slot)
int retval; int retval;
char *vio_uni_addr = NULL; 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); retval = pci_hp_register(slot->hotplug_slot);
if (retval) { if (retval) {
err("pci_hp_register failed with error %d\n", retval); err("pci_hp_register failed with error %d\n", retval);
rpaphp_release_slot(slot->hotplug_slot); rpaphp_release_slot(slot->hotplug_slot);
return (retval); return retval;
} }
/* create "phy_locatoin" file */ /* create "phy_locatoin" file */
...@@ -160,7 +160,7 @@ int register_slot(struct slot *slot) ...@@ -160,7 +160,7 @@ int register_slot(struct slot *slot)
info("Slot [%s](bus_id=%s) registered\n", info("Slot [%s](bus_id=%s) registered\n",
slot->name, pci_name(slot->bridge)); slot->name, pci_name(slot->bridge));
num_slots++; num_slots++;
return (0); return 0;
} }
int rpaphp_get_power_status(struct slot *slot, u8 * value) 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