[PATCH] clk: clk-loongson2: Zero init clk_init_data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxx
Cc: Yinbo Zhu <zhuyinbo@xxxxxxxxxxx>
Signed-off-by: Binbin Zhou <zhoubinbin@xxxxxxxxxxx>
---
 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




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux