OSDN Git Service

leds: Use devm_kzalloc in leds-regulator.c file
authorSachin Kamat <sachin.kamat@linaro.org>
Tue, 3 Jul 2012 11:47:54 +0000 (19:47 +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-regulator.c

index df7e963..25d382d 100644 (file)
@@ -158,7 +158,7 @@ static int __devinit regulator_led_probe(struct platform_device *pdev)
                return PTR_ERR(vcc);
        }
 
-       led = kzalloc(sizeof(*led), GFP_KERNEL);
+       led = devm_kzalloc(&pdev->dev, sizeof(*led), GFP_KERNEL);
        if (led == NULL) {
                ret = -ENOMEM;
                goto err_vcc;
@@ -169,7 +169,7 @@ static int __devinit regulator_led_probe(struct platform_device *pdev)
                dev_err(&pdev->dev, "Invalid default brightness %d\n",
                                pdata->brightness);
                ret = -EINVAL;
-               goto err_led;
+               goto err_vcc;
        }
        led->value = pdata->brightness;
 
@@ -190,7 +190,7 @@ static int __devinit regulator_led_probe(struct platform_device *pdev)
        ret = led_classdev_register(&pdev->dev, &led->cdev);
        if (ret < 0) {
                cancel_work_sync(&led->work);
-               goto err_led;
+               goto err_vcc;
        }
 
        /* to expose the default value to userspace */
@@ -201,8 +201,6 @@ static int __devinit regulator_led_probe(struct platform_device *pdev)
 
        return 0;
 
-err_led:
-       kfree(led);
 err_vcc:
        regulator_put(vcc);
        return ret;
@@ -216,7 +214,6 @@ static int __devexit regulator_led_remove(struct platform_device *pdev)
        cancel_work_sync(&led->work);
        regulator_led_disable(led);
        regulator_put(led->vcc);
-       kfree(led);
        return 0;
 }