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/

Reply via email to