leds: Use devm_kzalloc in leds-gpio.c file
authorSachin Kamat <sachin.kamat@linaro.org>
Wed, 4 Jul 2012 03:35:44 +0000 (11:35 +0800)
committerBryan Wu <bryan.wu@canonical.com>
Mon, 23 Jul 2012 23:52:36 +0000 (07:52 +0800)
devm_kzalloc() makes cleanup simpler.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
drivers/leds/leds-gpio.c

index f4c470a..c032b21 100644 (file)
@@ -178,7 +178,8 @@ static struct gpio_leds_priv * __devinit gpio_leds_create_of(struct platform_dev
        if (!count)
                return NULL;
 
-       priv = kzalloc(sizeof_gpio_leds_priv(count), GFP_KERNEL);
+       priv = devm_kzalloc(&pdev->dev, sizeof_gpio_leds_priv(count),
+                       GFP_KERNEL);
        if (!priv)
                return NULL;
 
@@ -215,7 +216,6 @@ static struct gpio_leds_priv * __devinit gpio_leds_create_of(struct platform_dev
 err:
        for (count = priv->num_leds - 2; count >= 0; count--)
                delete_gpio_led(&priv->leds[count]);
-       kfree(priv);
        return NULL;
 }
 
@@ -239,8 +239,9 @@ static int __devinit gpio_led_probe(struct platform_device *pdev)
        int i, ret = 0;
 
        if (pdata && pdata->num_leds) {
-               priv = kzalloc(sizeof_gpio_leds_priv(pdata->num_leds),
-                               GFP_KERNEL);
+               priv = devm_kzalloc(&pdev->dev,
+                               sizeof_gpio_leds_priv(pdata->num_leds),
+                                       GFP_KERNEL);
                if (!priv)
                        return -ENOMEM;
 
@@ -253,7 +254,6 @@ static int __devinit gpio_led_probe(struct platform_device *pdev)
                                /* On failure: unwind the led creations */
                                for (i = i - 1; i >= 0; i--)
                                        delete_gpio_led(&priv->leds[i]);
-                               kfree(priv);
                                return ret;
                        }
                }
@@ -277,7 +277,6 @@ static int __devexit gpio_led_remove(struct platform_device *pdev)
                delete_gpio_led(&priv->leds[i]);
 
        dev_set_drvdata(&pdev->dev, NULL);
-       kfree(priv);
 
        return 0;
 }