* [PATCH] clk: clk-loongson2: Zero init clk_init_data
@ 2023-05-24 1:49 Binbin Zhou
2023-06-13 1:31 ` Stephen Boyd
0 siblings, 1 reply; 2+ messages in thread
From: Binbin Zhou @ 2023-05-24 1:49 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd, linux-clk
Cc: Huacai Chen, Huacai Chen, loongson-kernel, Binbin Zhou, stable,
Yinbo Zhu
As clk_core_populate_parent_map() checks clk_init_data.num_parents
first, and checks clk_init_data.parent_names[] before
clk_init_data.parent_data[] and clk_init_data.parent_hws[].
Therefore the clk_init_data structure needs to be explicitly initialised
to prevent an unexpected crash if clk_init_data.parent_names[] is a
random value.
[ 1.374074] CPU 0 Unable to handle kernel paging request at virtual address 0000000000000dc0, era == 9000000002986290, ra == 900000000298624c
[ 1.386856] Oops[#1]:
[ 1.389151] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.4.0-rc2+ #4582
[ 1.395717] pc 9000000002986290 ra 900000000298624c tp 9000000100094000 sp 9000000100097a60
[ 1.404126] a0 9000000104541e00 a1 0000000000000000 a2 0000000000000dc0 a3 0000000000000001
[ 1.412533] a4 90000001000979f0 a5 90000001800977d7 a6 0000000000000000 a7 900000000362a000
[ 1.420939] t0 90000000034f3548 t1 6f8c2a9cb5ab5f64 t2 0000000000011340 t3 90000000031cf5b0
[ 1.429346] t4 0000000000000dc0 t5 0000000000000004 t6 0000000000011300 t7 9000000104541e40
[ 1.437753] t8 000000000005a4f8 u0 9000000104541e00 s9 9000000104541e00 s0 9000000104bc4700
[ 1.446159] s1 9000000104541da8 s2 0000000000000001 s3 900000000356f9d8 s4 ffffffffffffffff
[ 1.454565] s5 0000000000000000 s6 0000000000000dc0 s7 90000000030d0a88 s8 0000000000000000
[ 1.462972] ra: 900000000298624c __clk_register+0x228/0x84c
[ 1.468854] ERA: 9000000002986290 __clk_register+0x26c/0x84c
[ 1.474724] CRMD: 000000b0 (PLV0 -IE -DA +PG DACF=CC DACM=CC -WE)
[ 1.480975] PRMD: 00000004 (PPLV0 +PIE -PWE)
[ 1.485373] EUEN: 00000000 (-FPE -SXE -ASXE -BTE)
[ 1.490209] ECFG: 00071c1c (LIE=2-4,10-12 VS=7)
[ 1.494865] ESTAT: 00010000 [PIL] (IS= ECode=1 EsubCode=0)
[ 1.500390] BADV: 0000000000000dc0
[ 1.503899] PRID: 0014a000 (Loongson-64bit, )
[ 1.508369] Modules linked in:
[ 1.511447] Process swapper/0 (pid: 1, threadinfo=(____ptrval____), task=(____ptrval____))
[ 1.519768] Stack : 90000000031c1810 90000000030d0a88 900000000325bac0 90000000034f3548
[ 1.527848] 90000001002ab410 9000000104541e00 0000000000000dc0 9000000003150098
[ 1.535923] 90000000031c1810 90000000031a0460 900000000362a000 90000001002ab410
[ 1.543998] 900000000362a000 9000000104541da8 9000000104541de8 90000001002ab410
[ 1.552073] 900000000362a000 9000000002986a68 90000000034f3ed8 90000000030d0aa8
[ 1.560148] 9000000104541da8 900000000298d3b8 90000000031c1810 0000000000000000
[ 1.568223] 90000000034f3ed8 90000000030d0aa8 0000000000000dc0 90000000030d0a88
[ 1.576298] 90000001002ab410 900000000298d401 0000000000000000 6f8c2a9cb5ab5f64
[ 1.584373] 90000000034f4000 90000000030d0a88 9000000003a48a58 90000001002ab410
[ 1.592448] 9000000104bd81a8 900000000298d484 9000000100020260 0000000000000000
[ 1.600523] ...
[ 1.602993] Call Trace:
[ 1.603000] [<9000000002986290>] __clk_register+0x26c/0x84c
[ 1.611072] [<9000000002986a68>] devm_clk_hw_register+0x5c/0xe0
[ 1.617031] [<900000000298d3b8>] loongson2_clk_register.constprop.0+0xdc/0x10c
[ 1.624314] [<900000000298d484>] loongson2_clk_probe+0x9c/0x4ac
[ 1.630270] [<9000000002a4eba4>] platform_probe+0x68/0xc8
[ 1.635703] [<9000000002a4bf80>] really_probe+0xbc/0x2f0
[ 1.641054] [<9000000002a4c23c>] __driver_probe_device+0x88/0x128
[ 1.647185] [<9000000002a4c318>] driver_probe_device+0x3c/0x11c
[ 1.653142] [<9000000002a4c5dc>] __driver_attach+0x98/0x18c
[ 1.658749] [<9000000002a49ca0>] bus_for_each_dev+0x80/0xe0
[ 1.664357] [<9000000002a4b0dc>] bus_add_driver+0xfc/0x1ec
[ 1.669878] [<9000000002a4d4a8>] driver_register+0x68/0x134
[ 1.675486] [<90000000020f0110>] do_one_initcall+0x50/0x188
[ 1.681094] [<9000000003150f00>] kernel_init_freeable+0x224/0x294
[ 1.687226] [<90000000030240fc>] kernel_init+0x20/0x110
[ 1.692493] [<90000000020f1568>] ret_from_kernel_thread+0xc/0xa4
Fixes: acc0ccffec50 ("clk: clk-loongson2: add clock controller driver support")
Cc: stable@vger.kernel.org
Cc: Yinbo Zhu <zhuyinbo@loongson.cn>
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
drivers/clk/clk-loongson2.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/clk/clk-loongson2.c b/drivers/clk/clk-loongson2.c
index 70ae1dd2e474..b839edd7271b 100644
--- a/drivers/clk/clk-loongson2.c
+++ b/drivers/clk/clk-loongson2.c
@@ -40,7 +40,7 @@ static struct clk_hw *loongson2_clk_register(struct device *dev,
{
int ret;
struct clk_hw *hw;
- struct clk_init_data init;
+ struct clk_init_data init = { NULL };
hw = devm_kzalloc(dev, sizeof(*hw), GFP_KERNEL);
if (!hw)
--
2.39.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] clk: clk-loongson2: Zero init clk_init_data
2023-05-24 1:49 [PATCH] clk: clk-loongson2: Zero init clk_init_data Binbin Zhou
@ 2023-06-13 1:31 ` Stephen Boyd
0 siblings, 0 replies; 2+ messages in thread
From: Stephen Boyd @ 2023-06-13 1:31 UTC (permalink / raw)
To: Binbin Zhou, Michael Turquette, linux-clk
Cc: Huacai Chen, Huacai Chen, loongson-kernel, Binbin Zhou, stable,
Yinbo Zhu
Quoting Binbin Zhou (2023-05-23 18:49:24)
> As clk_core_populate_parent_map() checks clk_init_data.num_parents
> first, and checks clk_init_data.parent_names[] before
> clk_init_data.parent_data[] and clk_init_data.parent_hws[].
>
> Therefore the clk_init_data structure needs to be explicitly initialised
> to prevent an unexpected crash if clk_init_data.parent_names[] is a
> random value.
>
> [ 1.374074] CPU 0 Unable to handle kernel paging request at virtual address 0000000000000dc0, era == 9000000002986290, ra == 900000000298624c
> [ 1.386856] Oops[#1]:
> [ 1.389151] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.4.0-rc2+ #4582
> [ 1.395717] pc 9000000002986290 ra 900000000298624c tp 9000000100094000 sp 9000000100097a60
> [ 1.404126] a0 9000000104541e00 a1 0000000000000000 a2 0000000000000dc0 a3 0000000000000001
> [ 1.412533] a4 90000001000979f0 a5 90000001800977d7 a6 0000000000000000 a7 900000000362a000
> [ 1.420939] t0 90000000034f3548 t1 6f8c2a9cb5ab5f64 t2 0000000000011340 t3 90000000031cf5b0
> [ 1.429346] t4 0000000000000dc0 t5 0000000000000004 t6 0000000000011300 t7 9000000104541e40
> [ 1.437753] t8 000000000005a4f8 u0 9000000104541e00 s9 9000000104541e00 s0 9000000104bc4700
> [ 1.446159] s1 9000000104541da8 s2 0000000000000001 s3 900000000356f9d8 s4 ffffffffffffffff
> [ 1.454565] s5 0000000000000000 s6 0000000000000dc0 s7 90000000030d0a88 s8 0000000000000000
> [ 1.462972] ra: 900000000298624c __clk_register+0x228/0x84c
> [ 1.468854] ERA: 9000000002986290 __clk_register+0x26c/0x84c
> [ 1.474724] CRMD: 000000b0 (PLV0 -IE -DA +PG DACF=CC DACM=CC -WE)
> [ 1.480975] PRMD: 00000004 (PPLV0 +PIE -PWE)
> [ 1.485373] EUEN: 00000000 (-FPE -SXE -ASXE -BTE)
> [ 1.490209] ECFG: 00071c1c (LIE=2-4,10-12 VS=7)
> [ 1.494865] ESTAT: 00010000 [PIL] (IS= ECode=1 EsubCode=0)
> [ 1.500390] BADV: 0000000000000dc0
> [ 1.503899] PRID: 0014a000 (Loongson-64bit, )
> [ 1.508369] Modules linked in:
> [ 1.511447] Process swapper/0 (pid: 1, threadinfo=(____ptrval____), task=(____ptrval____))
> [ 1.519768] Stack : 90000000031c1810 90000000030d0a88 900000000325bac0 90000000034f3548
> [ 1.527848] 90000001002ab410 9000000104541e00 0000000000000dc0 9000000003150098
> [ 1.535923] 90000000031c1810 90000000031a0460 900000000362a000 90000001002ab410
> [ 1.543998] 900000000362a000 9000000104541da8 9000000104541de8 90000001002ab410
> [ 1.552073] 900000000362a000 9000000002986a68 90000000034f3ed8 90000000030d0aa8
> [ 1.560148] 9000000104541da8 900000000298d3b8 90000000031c1810 0000000000000000
> [ 1.568223] 90000000034f3ed8 90000000030d0aa8 0000000000000dc0 90000000030d0a88
> [ 1.576298] 90000001002ab410 900000000298d401 0000000000000000 6f8c2a9cb5ab5f64
> [ 1.584373] 90000000034f4000 90000000030d0a88 9000000003a48a58 90000001002ab410
> [ 1.592448] 9000000104bd81a8 900000000298d484 9000000100020260 0000000000000000
> [ 1.600523] ...
> [ 1.602993] Call Trace:
> [ 1.603000] [<9000000002986290>] __clk_register+0x26c/0x84c
> [ 1.611072] [<9000000002986a68>] devm_clk_hw_register+0x5c/0xe0
> [ 1.617031] [<900000000298d3b8>] loongson2_clk_register.constprop.0+0xdc/0x10c
> [ 1.624314] [<900000000298d484>] loongson2_clk_probe+0x9c/0x4ac
> [ 1.630270] [<9000000002a4eba4>] platform_probe+0x68/0xc8
> [ 1.635703] [<9000000002a4bf80>] really_probe+0xbc/0x2f0
> [ 1.641054] [<9000000002a4c23c>] __driver_probe_device+0x88/0x128
> [ 1.647185] [<9000000002a4c318>] driver_probe_device+0x3c/0x11c
> [ 1.653142] [<9000000002a4c5dc>] __driver_attach+0x98/0x18c
> [ 1.658749] [<9000000002a49ca0>] bus_for_each_dev+0x80/0xe0
> [ 1.664357] [<9000000002a4b0dc>] bus_add_driver+0xfc/0x1ec
> [ 1.669878] [<9000000002a4d4a8>] driver_register+0x68/0x134
> [ 1.675486] [<90000000020f0110>] do_one_initcall+0x50/0x188
> [ 1.681094] [<9000000003150f00>] kernel_init_freeable+0x224/0x294
> [ 1.687226] [<90000000030240fc>] kernel_init+0x20/0x110
> [ 1.692493] [<90000000020f1568>] ret_from_kernel_thread+0xc/0xa4
>
> Fixes: acc0ccffec50 ("clk: clk-loongson2: add clock controller driver support")
> Cc: stable@vger.kernel.org
> Cc: Yinbo Zhu <zhuyinbo@loongson.cn>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
> ---
Applied to clk-fixes
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-06-13 1:31 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-24 1:49 [PATCH] clk: clk-loongson2: Zero init clk_init_data Binbin Zhou
2023-06-13 1:31 ` Stephen Boyd
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.