projects
/
platform
/
kernel
/
linux-starfive.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
4dfe05b
)
rtc: class: Fix potential memleak in devm_rtc_allocate_device()
author
Shang XiaoJing
<shangxiaojing@huawei.com>
Thu, 10 Nov 2022 09:08:10 +0000
(17:08 +0800)
committer
Alexandre Belloni
<alexandre.belloni@bootlin.com>
Tue, 15 Nov 2022 20:01:51 +0000
(21:01 +0100)
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>
Reviewed-by: Yang Yingliang <yangyingliang@huawei.com>
Link:
https://lore.kernel.org/r/20221110090810.11225-1-shangxiaojing@huawei.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/class.c
patch
|
blob
|
history
diff --git
a/drivers/rtc/class.c
b/drivers/rtc/class.c
index
e48223c
..
e5b7b48
100644
(file)
--- 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 = dev
m_add_action_or_reset(dev, devm_rtc_release_device, rtc
);
if (err)
return ERR_PTR(err);
- err = dev
m_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);