From: Bryan Wu Date: Wed, 4 Jul 2012 04:30:50 +0000 (+0800) Subject: leds: convert Network Space v2 LED driver to devm_kzalloc() and cleanup error exit... X-Git-Tag: firefly_0821_release~3680^2~2332^2~7 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=a209f7669870c461932515eba147b961692de37f;p=firefly-linux-kernel-4.4.55.git leds: convert Network Space v2 LED driver to devm_kzalloc() and cleanup error exit path Cc: Simon Guinot Signed-off-by: Bryan Wu --- diff --git a/drivers/leds/leds-ns2.c b/drivers/leds/leds-ns2.c index 01cf89ec6944..10528dafb043 100644 --- a/drivers/leds/leds-ns2.c +++ b/drivers/leds/leds-ns2.c @@ -273,29 +273,23 @@ static int __devinit ns2_led_probe(struct platform_device *pdev) if (!pdata) return -EINVAL; - leds_data = kzalloc(sizeof(struct ns2_led_data) * + leds_data = devm_kzalloc(&pdev->dev, sizeof(struct ns2_led_data) * pdata->num_leds, GFP_KERNEL); if (!leds_data) return -ENOMEM; for (i = 0; i < pdata->num_leds; i++) { ret = create_ns2_led(pdev, &leds_data[i], &pdata->leds[i]); - if (ret < 0) - goto err; - + if (ret < 0) { + for (i = i - 1; i >= 0; i--) + delete_ns2_led(&leds_data[i]); + return ret; + } } platform_set_drvdata(pdev, leds_data); return 0; - -err: - for (i = i - 1; i >= 0; i--) - delete_ns2_led(&leds_data[i]); - - kfree(leds_data); - - return ret; } static int __devexit ns2_led_remove(struct platform_device *pdev) @@ -309,7 +303,6 @@ static int __devexit ns2_led_remove(struct platform_device *pdev) for (i = 0; i < pdata->num_leds; i++) delete_ns2_led(&leds_data[i]); - kfree(leds_data); platform_set_drvdata(pdev, NULL); return 0;