power: generic-adc-battery: use devm_kcalloc for psy->properties

A patch from »power: generic-adc-battery: use devm_kcalloc for psy->properties« in state Rework for linux-kernel

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

--------------------- drivers/power/generic-adc-battery.c ----------------------
index 59a1421..540d57f 100644
@@ -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;
}
 
 

Recent Patches

About Us

Sed lacus. Donec lectus. Nullam pretium nibh ut turpis. Nam bibendum. In nulla tortor, elementum vel, tempor at, varius non, purus. Mauris vitae nisl nec metus placerat consectetuer.

Read More...