From: Heiko Stuebner <heiko.stuebner@...>
Date: Thu, 8 May 2014 17:39:26 +0200
Commit-Message
From: Heiko Stuebner <heiko.stuebner@...>
This reduces the amount of code spent on initialization and cleanup
of the properties memory and also simplifies the error handling a bit.
Signed-off-by: Heiko Stuebner <heiko.stuebner@...>
Patch-Comment
drivers/power/generic-adc-battery.c | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
Statistics
- 4 lines added
- 10 lines removed
Changes
@@ -267,13 +267,11 @@ static int gab_probe(struct platform_device *pdev)
* copying the static properties and allocating extra memory for holding
* the extra configurable properties received from platform data.
*/
- psy->properties = kcalloc(ARRAY_SIZE(gab_props) +
+ psy->properties = devm_kcalloc(&pdev->dev, ARRAY_SIZE(gab_props) +
ARRAY_SIZE(gab_chan_name),
sizeof(*psy->properties), GFP_KERNEL);
- if (!psy->properties) {
- ret = -ENOMEM;
- goto first_mem_fail;
- }
+ if (!psy->properties)
+ return -ENOMEM;
memcpy(psy->properties, gab_props, sizeof(gab_props));
properties = (enum power_supply_property *)
@@ -301,7 +299,7 @@ static int gab_probe(struct platform_device *pdev)
/* none of the channels are supported so let's bail out */
if (index == 0) {
ret = -ENODEV;
- goto second_mem_fail;
+ return ret;
}
/*
@@ -348,9 +346,6 @@ err_reg_fail:
if (adc_bat->channel[chan])
iio_channel_release(adc_bat->channel[chan]);
}
-second_mem_fail:
- kfree(psy->properties);
-first_mem_fail:
return ret;
}
@@ -372,7 +367,6 @@ static int gab_remove(struct platform_device *pdev)
iio_channel_release(adc_bat->channel[chan]);
}
- kfree(adc_bat->psy.properties);
cancel_delayed_work(&adc_bat->bat_work);
return 0;
}