leds: convert HTC ASIC3 LED driver to devm_kzalloc() and cleanup error exit path
authorBryan Wu <bryan.wu@canonical.com>
Tue, 3 Jul 2012 04:47:16 +0000 (12:47 +0800)
committerBryan Wu <bryan.wu@canonical.com>
Mon, 23 Jul 2012 23:52:37 +0000 (07:52 +0800)
Cc: Paul Parsons <lost.distance@yahoo.com>
Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
drivers/leds/leds-asic3.c

index 525a92492837bb892de5b4fb29050bf939a0a4fb..5de74ff90dcf3ffddb4ba22b5ed94976f59f9ffc 100644 (file)
@@ -99,12 +99,13 @@ static int __devinit asic3_led_probe(struct platform_device *pdev)
 
        ret = mfd_cell_enable(pdev);
        if (ret < 0)
-               goto ret0;
+               return ret;
 
-       led->cdev = kzalloc(sizeof(struct led_classdev), GFP_KERNEL);
+       led->cdev = devm_kzalloc(&pdev->dev, sizeof(struct led_classdev),
+                               GFP_KERNEL);
        if (!led->cdev) {
                ret = -ENOMEM;
-               goto ret1;
+               goto out;
        }
 
        led->cdev->name = led->name;
@@ -115,15 +116,12 @@ static int __devinit asic3_led_probe(struct platform_device *pdev)
 
        ret = led_classdev_register(&pdev->dev, led->cdev);
        if (ret < 0)
-               goto ret2;
+               goto out;
 
        return 0;
 
-ret2:
-       kfree(led->cdev);
-ret1:
+out:
        (void) mfd_cell_disable(pdev);
-ret0:
        return ret;
 }
 
@@ -133,8 +131,6 @@ static int __devexit asic3_led_remove(struct platform_device *pdev)
 
        led_classdev_unregister(led->cdev);
 
-       kfree(led->cdev);
-
        return mfd_cell_disable(pdev);
 }