* [PATCH 3/4] backlight: lcd: call put_device if device_register fails
[not found] <1386962557-8899-1-git-send-email-levex@linux.com>
@ 2013-12-13 19:22 ` Levente Kurusa
0 siblings, 0 replies; 4+ messages in thread
From: Levente Kurusa @ 2013-12-13 19:22 UTC (permalink / raw)
To: LKML
Cc: Levente Kurusa, Jingoo Han, Jean-Christophe Plagniol-Villard,
Tomi Valkeinen, linux-fbdev
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 <levex@linux.com>
---
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);
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 3/4] backlight: lcd: call put_device if device_register fails
[not found] ` <1386959996-7958-4-git-send-email-levex@linux.com>
@ 2013-12-16 4:52 ` Jingoo Han
2013-12-16 17:16 ` Levente Kurusa
2014-01-07 1:42 ` Jingoo Han
1 sibling, 1 reply; 4+ messages in thread
From: Jingoo Han @ 2013-12-16 4:52 UTC (permalink / raw)
To: 'Levente Kurusa', 'Andrew Morton'
Cc: 'LKML', 'Jean-Christophe Plagniol-Villard',
'Tomi Valkeinen', linux-fbdev, 'Jingoo Han'
On Saturday, December 14, 2013 3:40 AM, Levente Kurusa wrote:
>
> 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 <levex@linux.com>
(+cc Andrew Morton)
Acked-by: Jingoo Han <jg1.han@samsung.com>
It looks good.
According to the comment of device_register, put_device()
should be used, instead of directly freeing.
./drivers/base/core.c
* NOTE: _Never_ directly free @dev after calling this function, even
* if it returned an error! Always use put_device() to give up the
* reference initialized in this function instead.
*/
int device_register(struct device *dev)
{
device_initialize(dev);
return device_add(dev);
}
EXPORT_SYMBOL_GPL(device_register);
Levente Kurusa,
By the way, don't send the same mails three times, without any
reason. It is the waste of traffic. :-(
Best regards,
Jingoo Han
> ---
> 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);
> }
>
> --
> 1.8.3.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 3/4] backlight: lcd: call put_device if device_register fails
2013-12-16 4:52 ` [PATCH 3/4] backlight: lcd: call put_device if device_register fails Jingoo Han
@ 2013-12-16 17:16 ` Levente Kurusa
0 siblings, 0 replies; 4+ messages in thread
From: Levente Kurusa @ 2013-12-16 17:16 UTC (permalink / raw)
To: Jingoo Han, 'Andrew Morton'
Cc: 'LKML', 'Jean-Christophe Plagniol-Villard',
'Tomi Valkeinen', linux-fbdev
On 12/16/2013 05:52 AM, Jingoo Han wrote:
> On Saturday, December 14, 2013 3:40 AM, Levente Kurusa wrote:
>>
>> 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 <levex@linux.com>
>
> (+cc Andrew Morton)
>
> Acked-by: Jingoo Han <jg1.han@samsung.com>
>
> It looks good.
> According to the comment of device_register, put_device()
> should be used, instead of directly freeing.
Indeed, this is also mostly explained in [0/4]. Thanks for the Ack!
>
[...]
>
> Levente Kurusa,
> By the way, don't send the same mails three times, without any
> reason. It is the waste of traffic. :-(
>
Yea, sorry about that I messed up my git's smtp config and hence most of the
messages bounced off. It didn't even reach LKML. Sorry once more.
--
Regards,
Levente Kurusa
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 3/4] backlight: lcd: call put_device if device_register fails
[not found] ` <1386959996-7958-4-git-send-email-levex@linux.com>
2013-12-16 4:52 ` [PATCH 3/4] backlight: lcd: call put_device if device_register fails Jingoo Han
@ 2014-01-07 1:42 ` Jingoo Han
1 sibling, 0 replies; 4+ messages in thread
From: Jingoo Han @ 2014-01-07 1:42 UTC (permalink / raw)
To: 'Levente Kurusa'
Cc: 'LKML', 'Jean-Christophe Plagniol-Villard',
'Tomi Valkeinen', linux-fbdev, 'Jingoo Han',
'Andrew Morton'
On Saturday, December 14, 2013 3:40 AM, Levente Kurusa wrote:
>
> 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 <levex@linux.com>
> ---
> 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
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-01-07 1:42 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1386959996-7958-1-git-send-email-levex@linux.com>
[not found] ` <1386959996-7958-4-git-send-email-levex@linux.com>
2013-12-16 4:52 ` [PATCH 3/4] backlight: lcd: call put_device if device_register fails Jingoo Han
2013-12-16 17:16 ` Levente Kurusa
2014-01-07 1:42 ` Jingoo Han
[not found] <1386962557-8899-1-git-send-email-levex@linux.com>
2013-12-13 19:22 ` Levente Kurusa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).