]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
clk: renesas: cpg-mssr: Use struct_size() helper
authorRosen Penev <rosenp@gmail.com>
Tue, 24 Mar 2026 02:11:03 +0000 (19:11 -0700)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Wed, 25 Mar 2026 17:28:38 +0000 (18:28 +0100)
struct_size() is what is normally used when a flexible array member is
present to avoid accidental mistakes.  pm_size is still needed for the
memcpy() call below.

Added __counted_by for extra runtime analysis.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://patch.msgid.link/20260324021103.13651-1-rosenp@gmail.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
drivers/clk/renesas/renesas-cpg-mssr.c

index 64a432fd0e8a1eae9f5d39b57059e5e19fa56ad4..26ea85cfaa02714f8e71c0454bdba23d68be2181 100644 (file)
@@ -569,7 +569,7 @@ fail:
 struct cpg_mssr_clk_domain {
        struct generic_pm_domain genpd;
        unsigned int num_core_pm_clks;
-       unsigned int core_pm_clks[];
+       unsigned int core_pm_clks[] __counted_by(num_core_pm_clks);
 };
 
 static struct cpg_mssr_clk_domain *cpg_mssr_clk_domain;
@@ -667,7 +667,7 @@ static int __init cpg_mssr_add_clk_domain(struct device *dev,
        size_t pm_size = num_core_pm_clks * sizeof(core_pm_clks[0]);
        int ret;
 
-       pd = devm_kzalloc(dev, sizeof(*pd) + pm_size, GFP_KERNEL);
+       pd = devm_kzalloc(dev, struct_size(pd, core_pm_clks, num_core_pm_clks), GFP_KERNEL);
        if (!pd)
                return -ENOMEM;