Re: [PATCH 3/4] backlight: lcd: call put_device if device_register fails
From: Jingoo Han <hidden>
Date: 2014-01-07 01:42:28
Also in:
lkml
On Saturday, December 14, 2013 3:40 AM, Levente Kurusa wrote:
quoted hunk
Currently we kfree the container of the device which failed to register. This is wrong as the last reference is not given up with a put_device call. Also, now that we have put_device() callen, we no longer need the kfree as the new_ld->dev.release function will take care of kfreeing the associated memory. Signed-off-by: Levente Kurusa <redacted> --- drivers/video/backlight/lcd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/drivers/video/backlight/lcd.c b/drivers/video/backlight/lcd.c index 93cf15e..7de847d 100644 --- a/drivers/video/backlight/lcd.c +++ b/drivers/video/backlight/lcd.c@@ -228,7 +228,7 @@ struct lcd_device *lcd_device_register(const char *name, struct device *parent, rc = device_register(&new_ld->dev); if (rc) { - kfree(new_ld); + put_device(&new_ld->dev); return ERR_PTR(rc); }
(+cc Andrew Morton)
Hi Levente Kurusa,
Would you fix the same thing for 'backlight.c' file?
./drivers/video/backlight/backlight.c
struct backlight_device *backlight_device_register(const char *name,
.....
rc = device_register(&new_bd->dev);
if (rc) {
kfree(new_bd);
return ERR_PTR(rc);
}
Best regards,
Jingoo Han