]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
clk: en7523: Initialize num before accessing hws in en7523_register_clocks()
authorHaoyu Li <lihaoyu499@gmail.com>
Tue, 3 Dec 2024 14:29:15 +0000 (22:29 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 14 Dec 2024 19:04:13 +0000 (20:04 +0100)
[ Upstream commit 52fd1709e41d3a85b48bcfe2404a024ebaf30c3b ]

With the new __counted_by annotation in clk_hw_onecell_data, the "num"
struct member must be set before accessing the "hws" array. Failing to
do so will trigger a runtime warning when enabling CONFIG_UBSAN_BOUNDS
and CONFIG_FORTIFY_SOURCE.

Fixes: f316cdff8d67 ("clk: Annotate struct clk_hw_onecell_data with __counted_by")
Signed-off-by: Haoyu Li <lihaoyu499@gmail.com>
Link: https://lore.kernel.org/r/20241203142915.345523-1-lihaoyu499@gmail.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/clk/clk-en7523.c

index fdd8ea989ed24a5967a42091bb3fee59500b4353..bc21b2921449261382144b7430f2bc678d14aa4a 100644 (file)
@@ -508,6 +508,8 @@ static void en7523_register_clocks(struct device *dev, struct clk_hw_onecell_dat
        u32 rate;
        int i;
 
+       clk_data->num = EN7523_NUM_CLOCKS;
+
        for (i = 0; i < ARRAY_SIZE(en7523_base_clks); i++) {
                const struct en_clk_desc *desc = &en7523_base_clks[i];
                u32 reg = desc->div_reg ? desc->div_reg : desc->base_reg;
@@ -529,8 +531,6 @@ static void en7523_register_clocks(struct device *dev, struct clk_hw_onecell_dat
 
        hw = en7523_register_pcie_clk(dev, np_base);
        clk_data->hws[EN7523_CLK_PCIE] = hw;
-
-       clk_data->num = EN7523_NUM_CLOCKS;
 }
 
 static int en7523_clk_hw_init(struct platform_device *pdev,