Remove some copy/paste code in our error handling paths, which makes the function smaller and slightly easier to read. Signed-off-by: Alex Chiang <achiang@xxxxxx> --- drivers/acpi/dock.c | 66 +++++++++++++++++++-------------------------------- 1 files changed, 24 insertions(+), 42 deletions(-) diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c index 7338b6a..a8f81c0 100644 --- a/drivers/acpi/dock.c +++ b/drivers/acpi/dock.c @@ -987,46 +987,24 @@ static int dock_add(acpi_handle handle) dock_station->flags |= DOCK_IS_BAT; ret = device_create_file(&dock_device->dev, &dev_attr_docked); - if (ret) { - printk(KERN_ERR "Error %d adding sysfs file\n", ret); - platform_device_unregister(dock_device); - kfree(dock_station); - dock_station = NULL; - return ret; - } + if (ret) + goto err_unregister; + ret = device_create_file(&dock_device->dev, &dev_attr_undock); - if (ret) { - printk(KERN_ERR "Error %d adding sysfs file\n", ret); - device_remove_file(&dock_device->dev, &dev_attr_docked); - platform_device_unregister(dock_device); - kfree(dock_station); - dock_station = NULL; - return ret; - } + if (ret) + goto err_unregister1; + ret = device_create_file(&dock_device->dev, &dev_attr_uid); - if (ret) { - printk(KERN_ERR "Error %d adding sysfs file\n", ret); - device_remove_file(&dock_device->dev, &dev_attr_docked); - device_remove_file(&dock_device->dev, &dev_attr_undock); - platform_device_unregister(dock_device); - kfree(dock_station); - dock_station = NULL; - return ret; - } + if (ret) + goto err_unregister2; + ret = device_create_file(&dock_device->dev, &dev_attr_flags); - if (ret) { - printk(KERN_ERR "Error %d adding sysfs file\n", ret); - device_remove_file(&dock_device->dev, &dev_attr_docked); - device_remove_file(&dock_device->dev, &dev_attr_undock); - device_remove_file(&dock_device->dev, &dev_attr_uid); - platform_device_unregister(dock_device); - kfree(dock_station); - dock_station = NULL; - return ret; - } + if (ret) + goto err_unregister3; + ret = device_create_file(&dock_device->dev, &dev_attr_type); if (ret) - printk(KERN_ERR"Error %d adding sysfs file\n", ret); + goto err_unregister4; /* Find dependent devices */ acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, @@ -1036,10 +1014,8 @@ static int dock_add(acpi_handle handle) /* add the dock station as a device dependent on itself */ dd = alloc_dock_dependent_device(handle); if (!dd) { - kfree(dock_station); - dock_station = NULL; ret = -ENOMEM; - goto dock_add_err_unregister; + goto err_unregister5; } add_dock_dependent_device(dock_station, dd); @@ -1047,12 +1023,18 @@ static int dock_add(acpi_handle handle) list_add(&dock_station->sibling, &dock_stations); return 0; -dock_add_err_unregister: +err_unregister5: device_remove_file(&dock_device->dev, &dev_attr_type); - device_remove_file(&dock_device->dev, &dev_attr_docked); - device_remove_file(&dock_device->dev, &dev_attr_undock); - device_remove_file(&dock_device->dev, &dev_attr_uid); +err_unregister4: device_remove_file(&dock_device->dev, &dev_attr_flags); +err_unregister3: + device_remove_file(&dock_device->dev, &dev_attr_uid); +err_unregister2: + device_remove_file(&dock_device->dev, &dev_attr_undock); +err_unregister1: + device_remove_file(&dock_device->dev, &dev_attr_docked); +err_unregister: + printk(KERN_ERR "%s encountered error %d\n", __func__, ret); platform_device_unregister(dock_device); kfree(dock_station); dock_station = NULL; -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html