Shang XiaoJing 60da738082 rtc: class: Fix potential memleak in devm_rtc_allocate_device()
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>
2022-11-15 21:01:51 +01:00
..
2022-06-24 21:24:02 +02:00
2022-11-15 21:01:51 +01:00
2021-08-10 23:21:46 +02:00
2022-11-15 21:01:51 +01:00
2022-06-24 21:24:02 +02:00
2022-06-24 21:24:02 +02:00
2022-06-24 21:24:02 +02:00
2021-12-02 23:23:38 +01:00
2021-09-25 23:22:28 +02:00
2022-06-24 21:24:02 +02:00
2022-06-24 21:24:02 +02:00
2022-06-24 21:24:02 +02:00
2022-06-24 21:24:02 +02:00
2022-06-24 21:24:02 +02:00
2021-04-29 23:03:26 +02:00
2021-05-25 00:41:25 +02:00
2022-06-24 21:24:02 +02:00
2021-10-01 23:28:28 +02:00
2021-01-16 23:19:26 +01:00
2022-06-24 21:24:02 +02:00
2022-06-24 21:24:02 +02:00
2022-06-24 21:24:02 +02:00
2022-06-24 21:24:02 +02:00
2022-04-19 16:27:05 +02:00
2022-10-13 23:36:52 +02:00
2022-06-24 21:24:02 +02:00
2022-06-24 21:24:02 +02:00
2021-09-25 23:26:37 +02:00
2022-06-24 21:24:02 +02:00
2022-08-09 00:56:41 +02:00
2020-12-03 23:43:23 +01:00