diff options
Diffstat (limited to 'drivers/leds/leds-asic3.c')
| -rw-r--r-- | drivers/leds/leds-asic3.c | 16 | 
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/leds/leds-asic3.c b/drivers/leds/leds-asic3.c index 525a9249283..5de74ff90dc 100644 --- a/drivers/leds/leds-asic3.c +++ b/drivers/leds/leds-asic3.c @@ -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);  }  |