* [PATCH] rtc: class: Fix potential memleak in devm_rtc_allocate_device()
@ 2022-11-10 9:08 Shang XiaoJing
2022-11-10 11:43 ` Yang Yingliang
2022-11-15 19:33 ` Alexandre Belloni
0 siblings, 2 replies; 3+ messages in thread
From: Shang XiaoJing @ 2022-11-10 9:08 UTC (permalink / raw)
To: a.zummo, alexandre.belloni, yangyingliang, linux-rtc; +Cc: shangxiaojing
devm_rtc_allocate_device() will alloc a rtc_device first, and then run
dev_set_name(). If dev_set_name() failed, the rtc_device will memleak.
Move devm_add_action_or_reset() in front of dev_set_name() to prevent
memleak.
unreferenced object 0xffff888110a53000 (size 2048):
comm "python3", pid 470, jiffies 4296078308 (age 58.882s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 08 30 a5 10 81 88 ff ff .........0......
08 30 a5 10 81 88 ff ff 00 00 00 00 00 00 00 00 .0..............
backtrace:
[<000000004aac0364>] kmalloc_trace+0x21/0x110
[<000000000ff02202>] devm_rtc_allocate_device+0xd4/0x400
[<000000001bdf5639>] devm_rtc_device_register+0x1a/0x80
[<00000000351bf81c>] rx4581_probe+0xdd/0x110 [rtc_rx4581]
[<00000000f0eba0ae>] spi_probe+0xde/0x130
[<00000000bff89ee8>] really_probe+0x175/0x3f0
[<00000000128e8d84>] __driver_probe_device+0xe6/0x170
[<00000000ee5bf913>] device_driver_attach+0x32/0x80
[<00000000f3f28f92>] bind_store+0x10b/0x1a0
[<000000009ff812d8>] drv_attr_store+0x49/0x70
[<000000008139c323>] sysfs_kf_write+0x8d/0xb0
[<00000000b6146e01>] kernfs_fop_write_iter+0x214/0x2d0
[<00000000ecbe3895>] vfs_write+0x61a/0x7d0
[<00000000aa2196ea>] ksys_write+0xc8/0x190
[<0000000046a600f5>] do_syscall_64+0x37/0x90
[<00000000541a336f>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
Fixes: 24d23181e43d ("rtc: class: check return value when calling dev_set_name()")
Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
---
drivers/rtc/class.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/rtc/class.c b/drivers/rtc/class.c
index e48223c00c67..e5b7b48cffac 100644
--- a/drivers/rtc/class.c
+++ b/drivers/rtc/class.c
@@ -374,11 +374,11 @@ struct rtc_device *devm_rtc_allocate_device(struct device *dev)
rtc->id = id;
rtc->dev.parent = dev;
- err = dev_set_name(&rtc->dev, "rtc%d", id);
+ err = devm_add_action_or_reset(dev, devm_rtc_release_device, rtc);
if (err)
return ERR_PTR(err);
- err = devm_add_action_or_reset(dev, devm_rtc_release_device, rtc);
+ err = dev_set_name(&rtc->dev, "rtc%d", id);
if (err)
return ERR_PTR(err);
--
2.17.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] rtc: class: Fix potential memleak in devm_rtc_allocate_device()
2022-11-10 9:08 [PATCH] rtc: class: Fix potential memleak in devm_rtc_allocate_device() Shang XiaoJing
@ 2022-11-10 11:43 ` Yang Yingliang
2022-11-15 19:33 ` Alexandre Belloni
1 sibling, 0 replies; 3+ messages in thread
From: Yang Yingliang @ 2022-11-10 11:43 UTC (permalink / raw)
To: Shang XiaoJing, a.zummo, alexandre.belloni, linux-rtc, yangyingliang
On 2022/11/10 17:08, Shang XiaoJing wrote:
> devm_rtc_allocate_device() will alloc a rtc_device first, and then run
> dev_set_name(). If dev_set_name() failed, the rtc_device will memleak.
> Move devm_add_action_or_reset() in front of dev_set_name() to prevent
> memleak.
>
> unreferenced object 0xffff888110a53000 (size 2048):
> comm "python3", pid 470, jiffies 4296078308 (age 58.882s)
> hex dump (first 32 bytes):
> 00 00 00 00 00 00 00 00 08 30 a5 10 81 88 ff ff .........0......
> 08 30 a5 10 81 88 ff ff 00 00 00 00 00 00 00 00 .0..............
> backtrace:
> [<000000004aac0364>] kmalloc_trace+0x21/0x110
> [<000000000ff02202>] devm_rtc_allocate_device+0xd4/0x400
> [<000000001bdf5639>] devm_rtc_device_register+0x1a/0x80
> [<00000000351bf81c>] rx4581_probe+0xdd/0x110 [rtc_rx4581]
> [<00000000f0eba0ae>] spi_probe+0xde/0x130
> [<00000000bff89ee8>] really_probe+0x175/0x3f0
> [<00000000128e8d84>] __driver_probe_device+0xe6/0x170
> [<00000000ee5bf913>] device_driver_attach+0x32/0x80
> [<00000000f3f28f92>] bind_store+0x10b/0x1a0
> [<000000009ff812d8>] drv_attr_store+0x49/0x70
> [<000000008139c323>] sysfs_kf_write+0x8d/0xb0
> [<00000000b6146e01>] kernfs_fop_write_iter+0x214/0x2d0
> [<00000000ecbe3895>] vfs_write+0x61a/0x7d0
> [<00000000aa2196ea>] ksys_write+0xc8/0x190
> [<0000000046a600f5>] do_syscall_64+0x37/0x90
> [<00000000541a336f>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
>
> Fixes: 24d23181e43d ("rtc: class: check return value when calling dev_set_name()")
> Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
> ---
> drivers/rtc/class.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/rtc/class.c b/drivers/rtc/class.c
> index e48223c00c67..e5b7b48cffac 100644
> --- a/drivers/rtc/class.c
> +++ b/drivers/rtc/class.c
> @@ -374,11 +374,11 @@ struct rtc_device *devm_rtc_allocate_device(struct device *dev)
>
> rtc->id = id;
> rtc->dev.parent = dev;
> - err = dev_set_name(&rtc->dev, "rtc%d", id);
> + err = devm_add_action_or_reset(dev, devm_rtc_release_device, rtc);
> if (err)
> return ERR_PTR(err);
>
> - err = devm_add_action_or_reset(dev, devm_rtc_release_device, rtc);
> + err = dev_set_name(&rtc->dev, "rtc%d", id);
> if (err)
> return ERR_PTR(err);
Looks good to me.
Reviewed-by: Yang Yingliang <yangyingliang@huawei.com>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] rtc: class: Fix potential memleak in devm_rtc_allocate_device()
2022-11-10 9:08 [PATCH] rtc: class: Fix potential memleak in devm_rtc_allocate_device() Shang XiaoJing
2022-11-10 11:43 ` Yang Yingliang
@ 2022-11-15 19:33 ` Alexandre Belloni
1 sibling, 0 replies; 3+ messages in thread
From: Alexandre Belloni @ 2022-11-15 19:33 UTC (permalink / raw)
To: Shang XiaoJing, linux-rtc, yangyingliang, a.zummo
On Thu, 10 Nov 2022 17:08:10 +0800, Shang XiaoJing wrote:
> devm_rtc_allocate_device() will alloc a rtc_device first, and then run
> dev_set_name(). If dev_set_name() failed, the rtc_device will memleak.
> Move devm_add_action_or_reset() in front of dev_set_name() to prevent
> memleak.
>
> unreferenced object 0xffff888110a53000 (size 2048):
> comm "python3", pid 470, jiffies 4296078308 (age 58.882s)
> hex dump (first 32 bytes):
> 00 00 00 00 00 00 00 00 08 30 a5 10 81 88 ff ff .........0......
> 08 30 a5 10 81 88 ff ff 00 00 00 00 00 00 00 00 .0..............
> backtrace:
> [<000000004aac0364>] kmalloc_trace+0x21/0x110
> [<000000000ff02202>] devm_rtc_allocate_device+0xd4/0x400
> [<000000001bdf5639>] devm_rtc_device_register+0x1a/0x80
> [<00000000351bf81c>] rx4581_probe+0xdd/0x110 [rtc_rx4581]
> [<00000000f0eba0ae>] spi_probe+0xde/0x130
> [<00000000bff89ee8>] really_probe+0x175/0x3f0
> [<00000000128e8d84>] __driver_probe_device+0xe6/0x170
> [<00000000ee5bf913>] device_driver_attach+0x32/0x80
> [<00000000f3f28f92>] bind_store+0x10b/0x1a0
> [<000000009ff812d8>] drv_attr_store+0x49/0x70
> [<000000008139c323>] sysfs_kf_write+0x8d/0xb0
> [<00000000b6146e01>] kernfs_fop_write_iter+0x214/0x2d0
> [<00000000ecbe3895>] vfs_write+0x61a/0x7d0
> [<00000000aa2196ea>] ksys_write+0xc8/0x190
> [<0000000046a600f5>] do_syscall_64+0x37/0x90
> [<00000000541a336f>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
>
> [...]
Applied, thanks!
[1/1] rtc: class: Fix potential memleak in devm_rtc_allocate_device()
commit: 17c98ae4eb03f369a9050611d8b4a78925c35465
Best regards,
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-11-15 19:33 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-10 9:08 [PATCH] rtc: class: Fix potential memleak in devm_rtc_allocate_device() Shang XiaoJing
2022-11-10 11:43 ` Yang Yingliang
2022-11-15 19:33 ` Alexandre Belloni
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.