From: Heiko Stuebner <heiko.stueb...@bq.com> 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.stueb...@bq.com> --- drivers/power/generic-adc-battery.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/drivers/power/generic-adc-battery.c b/drivers/power/generic-adc-battery.c index 59a1421..540d57f 100644 --- a/drivers/power/generic-adc-battery.c +++ b/drivers/power/generic-adc-battery.c @@ -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; } -- 1.9.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/