mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
leds: leds-lp3944: properly handle lp3944_configure fail in lp3944_probe
In current implementation, lp3944_probe return 0 even if lp3944_configure fail. Therefore, led_classdev_unregister will be executed twice ( in error handling of lp3944_configure and lp3944_remove ). This patch properly handles lp3944_configure fail in lp3944_probe. Signed-off-by: Axel Lin <[email protected]> Acked-by: Wolfram Sang <[email protected]> Acked-by: Antonio Ospite <[email protected]> Signed-off-by: Richard Purdie <[email protected]>
This commit is contained in:
parent
569762ef3d
commit
7e1ce34f25
1 changed files with 7 additions and 2 deletions
|
|
@ -379,6 +379,7 @@ static int __devinit lp3944_probe(struct i2c_client *client,
|
|||
{
|
||||
struct lp3944_platform_data *lp3944_pdata = client->dev.platform_data;
|
||||
struct lp3944_data *data;
|
||||
int err;
|
||||
|
||||
if (lp3944_pdata == NULL) {
|
||||
dev_err(&client->dev, "no platform data\n");
|
||||
|
|
@ -401,9 +402,13 @@ static int __devinit lp3944_probe(struct i2c_client *client,
|
|||
|
||||
mutex_init(&data->lock);
|
||||
|
||||
dev_info(&client->dev, "lp3944 enabled\n");
|
||||
err = lp3944_configure(client, data, lp3944_pdata);
|
||||
if (err < 0) {
|
||||
kfree(data);
|
||||
return err;
|
||||
}
|
||||
|
||||
lp3944_configure(client, data, lp3944_pdata);
|
||||
dev_info(&client->dev, "lp3944 enabled\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue