Prev: [PATCH] led-class: set permissions on max_brightness file to 0444
Next: linux-next: manual merge of the net tree with Linus' tree
From: Axel Lin on 16 May 2010 21:40 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 <axel.lin(a)gmail.com> --- drivers/leds/leds-lp3944.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/drivers/leds/leds-lp3944.c b/drivers/leds/leds-lp3944.c index 8d5ecce..03a24d0 100644 --- a/drivers/leds/leds-lp3944.c +++ b/drivers/leds/leds-lp3944.c @@ -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"); @@ -403,8 +404,15 @@ static int __devinit lp3944_probe(struct i2c_client *client, dev_info(&client->dev, "lp3944 enabled\n"); - lp3944_configure(client, data, lp3944_pdata); + err = lp3944_configure(client, data, lp3944_pdata); + if (err < 0) + goto err_configure; + return 0; + +err_configure: + kfree(data); + return err; } static int __devexit lp3944_remove(struct i2c_client *client) -- 1.5.4.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |