From: Axel Lin Date: Thu, 3 May 2012 05:44:24 +0000 (+1000) Subject: leds: lm3556: don't call kfree for the memory allocated by devm_kzalloc X-Git-Tag: next-20120503~2^2~104 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=712353603eb0f2b1ebe0ff3f6a7f193a8d596a38;p=karo-tx-linux.git leds: lm3556: don't call kfree for the memory allocated by devm_kzalloc The devm_* functions eliminate the need for manual resource releasing and simplify error handling. Resources allocated by devm_* are freed automatically on driver detach. Thus adding kfree calls here will introduce double free bug. Signed-off-by: Axel Lin Cc: Geon Si Jeong Signed-off-by: Andrew Morton --- diff --git a/drivers/leds/leds-lm3556.c b/drivers/leds/leds-lm3556.c index cc0abbcfee1b..15a5acdb77ef 100644 --- a/drivers/leds/leds-lm3556.c +++ b/drivers/leds/leds-lm3556.c @@ -360,9 +360,8 @@ static int lm3556_probe(struct i2c_client *client, return -ENODATA; } - chip = - devm_kzalloc(&client->dev, sizeof(struct lm3556_chip_data), - GFP_KERNEL); + chip = devm_kzalloc(&client->dev, sizeof(struct lm3556_chip_data), + GFP_KERNEL); if (!chip) return -ENOMEM; @@ -416,7 +415,6 @@ err_create_torch_file: err_create_flash_file: err_chip_init: i2c_set_clientdata(client, NULL); - kfree(chip); return err; } @@ -430,7 +428,6 @@ static int lm3556_remove(struct i2c_client *client) led_classdev_unregister(&chip->cdev_flash); lm3556_write_reg(client, REG_ENABLE, 0); - kfree(chip); return 0; }