rtc: ep93xx: Fix NULL pointer dereference in ep93xx_rtc_read_time
Mismatch in probe platform_set_drvdata set's and method's that call
dev_get_platdata will result in "Unable to handle kernel NULL pointer
dereference", let's use according method for getting driver data after
platform_set_drvdata.
8<--- cut here ---
Unable to handle kernel NULL pointer dereference at virtual address
00000000
pgd = (ptrval)
[
00000000] *pgd=
00000000
Internal error: Oops: 5 [#1] ARM
Modules linked in:
CPU: 0 PID: 1 Comm: swapper Not tainted
5.9.10-00003-g723e101e0037-dirty #4
Hardware name: Technologic Systems TS-72xx SBC
PC is at ep93xx_rtc_read_time+0xc/0x2c
LR is at __rtc_read_time+0x4c/0x8c
[...]
[<
c02b01c8>] (ep93xx_rtc_read_time) from [<
c02ac38c>] (__rtc_read_time+0x4c/0x8c)
[<
c02ac38c>] (__rtc_read_time) from [<
c02ac3f8>] (rtc_read_time+0x2c/0x4c)
[<
c02ac3f8>] (rtc_read_time) from [<
c02acc54>] (__rtc_read_alarm+0x28/0x358)
[<
c02acc54>] (__rtc_read_alarm) from [<
c02abd80>] (__rtc_register_device+0x124/0x2ec)
[<
c02abd80>] (__rtc_register_device) from [<
c02b028c>] (ep93xx_rtc_probe+0xa4/0xac)
[<
c02b028c>] (ep93xx_rtc_probe) from [<
c026424c>] (platform_drv_probe+0x24/0x5c)
[<
c026424c>] (platform_drv_probe) from [<
c0262918>] (really_probe+0x218/0x374)
[<
c0262918>] (really_probe) from [<
c0262da0>] (device_driver_attach+0x44/0x60)
[<
c0262da0>] (device_driver_attach) from [<
c0262e70>] (__driver_attach+0xb4/0xc0)
[<
c0262e70>] (__driver_attach) from [<
c0260d44>] (bus_for_each_dev+0x68/0xac)
[<
c0260d44>] (bus_for_each_dev) from [<
c026223c>] (driver_attach+0x18/0x24)
[<
c026223c>] (driver_attach) from [<
c0261dd8>] (bus_add_driver+0x150/0x1b4)
[<
c0261dd8>] (bus_add_driver) from [<
c026342c>] (driver_register+0xb0/0xf4)
[<
c026342c>] (driver_register) from [<
c0264210>] (__platform_driver_register+0x30/0x48)
[<
c0264210>] (__platform_driver_register) from [<
c04cb9ac>] (ep93xx_rtc_driver_init+0x10/0x1c)
[<
c04cb9ac>] (ep93xx_rtc_driver_init) from [<
c000973c>] (do_one_initcall+0x7c/0x1c0)
[<
c000973c>] (do_one_initcall) from [<
c04b9ecc>] (kernel_init_freeable+0x168/0x1ac)
[<
c04b9ecc>] (kernel_init_freeable) from [<
c03b2228>] (kernel_init+0x8/0xf4)
[<
c03b2228>] (kernel_init) from [<
c00082c0>] (ret_from_fork+0x14/0x34)
Exception stack(0xc441dfb0 to 0xc441dff8)
dfa0:
00000000 00000000 00000000 00000000
dfc0:
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
dfe0:
00000000 00000000 00000000 00000000 00000013 00000000
Code:
e12fff1e e92d4010 e590303c e1a02001 (
e5933000)
---[ end trace
c914d6030eaa95c8 ]---
Fixes: b809d192eb98 ("rtc: ep93xx: stop setting platform_data")
Signed-off-by: Nikita Shubin <nikita.shubin@maquefel.me>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20201201095507.10317-1-nikita.shubin@maquefel.me