leds: convert Big Networks LED driver to devm_kzalloc()
authorBryan Wu <bryan.wu@canonical.com>
Tue, 3 Jul 2012 04:42:55 +0000 (12:42 +0800)
committerBryan Wu <bryan.wu@canonical.com>
Mon, 23 Jul 2012 23:52:37 +0000 (07:52 +0800)
Cc: Simon Guinot <sguinot@lacie.com>
Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
drivers/leds/leds-netxbig.c

index 73973fdbd8be738ac57c23c6fb728b309a0a13d3..e37618e363cf7ce5a1686b79f9152360dd5dc275 100644 (file)
@@ -362,14 +362,14 @@ static int __devinit netxbig_led_probe(struct platform_device *pdev)
        if (!pdata)
                return -EINVAL;
 
-       leds_data = kzalloc(sizeof(struct netxbig_led_data) * pdata->num_leds,
-                           GFP_KERNEL);
+       leds_data = devm_kzalloc(&pdev->dev,
+               sizeof(struct netxbig_led_data) * pdata->num_leds, GFP_KERNEL);
        if (!leds_data)
                return -ENOMEM;
 
        ret = gpio_ext_init(pdata->gpio_ext);
        if (ret < 0)
-               goto err_free_data;
+               return ret;
 
        for (i = 0; i < pdata->num_leds; i++) {
                ret = create_netxbig_led(pdev, &leds_data[i], &pdata->leds[i]);
@@ -386,9 +386,6 @@ err_free_leds:
                delete_netxbig_led(&leds_data[i]);
 
        gpio_ext_free(pdata->gpio_ext);
-err_free_data:
-       kfree(leds_data);
-
        return ret;
 }
 
@@ -404,7 +401,6 @@ static int __devexit netxbig_led_remove(struct platform_device *pdev)
                delete_netxbig_led(&leds_data[i]);
 
        gpio_ext_free(pdata->gpio_ext);
-       kfree(leds_data);
 
        return 0;
 }