st_clk_probe() has not check for clk_hw_register_mux(), clk_hw_register_gate() and devm_clk_hw_register_clkdev(). Add the missed checks and return devm_clk_hw_register_clkdev()'s return value to check errors.
Fixes: 421bf6a1f061 ("clk: x86: Add ST oscout platform clock") Signed-off-by: Chuhong Yuan <hsleste...@gmail.com> --- drivers/clk/x86/clk-st.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/clk/x86/clk-st.c b/drivers/clk/x86/clk-st.c index 25d4b97aff9b..e6ee6ea2568b 100644 --- a/drivers/clk/x86/clk-st.c +++ b/drivers/clk/x86/clk-st.c @@ -46,16 +46,20 @@ static int st_clk_probe(struct platform_device *pdev) clk_oscout1_parents, ARRAY_SIZE(clk_oscout1_parents), 0, st_data->base + CLKDRVSTR2, OSCOUT1CLK25MHZ, 3, 0, NULL); + if (IS_ERR(hws[ST_CLK_MUX])) + return PTR_ERR(hws[ST_CLK_MUX]); + clk_set_parent(hws[ST_CLK_MUX]->clk, hws[ST_CLK_48M]->clk); hws[ST_CLK_GATE] = clk_hw_register_gate(NULL, "oscout1", "oscout1_mux", 0, st_data->base + MISCCLKCNTL1, OSCCLKENB, CLK_GATE_SET_TO_DISABLE, NULL); - devm_clk_hw_register_clkdev(&pdev->dev, hws[ST_CLK_GATE], "oscout1", - NULL); + if (IS_ERR(hws[ST_CLK_GATE])) + return PTR_ERR(hws[ST_CLK_GATE]); - return 0; + return devm_clk_hw_register_clkdev(&pdev->dev, hws[ST_CLK_GATE], + "oscout1", NULL); } static int st_clk_remove(struct platform_device *pdev) -- 2.26.2