All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Akari Tsuyukusa" <akkun11.open@gmail.com>
Cc: "open list:COMMON CLK FRAMEWORK" <linux-clk@vger.kernel.org>
Subject: Re: [PATCH v2 19/35] clk: mediatek: mt6779: Switch to common probe/remove helpers
Date: Tue, 13 Oct 2026 16:31:08 +0000	[thread overview]
Message-ID: <sashiko-outbox-170116@kernel.org> (raw)
In-Reply-To: <20261013151734.3177690-20-akkun11.open@gmail.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] clk: heap buffer overflow during clock registration due to sparse IDs
--

commit 667fb3289a24a54cc5cde32a40e6a991c9fdb902
Author: Akari Tsuyukusa <akkun11.open@gmail.com>

clk: mediatek: mt6779: Switch to common probe/remove helpers
    
The MT6779 apmixedsys driver used a custom probe to register PLLs.
With PLL registration now supported by the common helpers, it can use
mtk_clk_simple_probe() and mtk_clk_simple_remove().

> diff --git a/drivers/clk/mediatek/clk-mt6779.c b/drivers/clk/mediatek/clk-mt6779.c
> index 4b9dcb910b03f..a806789ae27c1 100644
> --- a/drivers/clk/mediatek/clk-mt6779.c
> +++ b/drivers/clk/mediatek/clk-mt6779.c
[ ... ]
> @@ -1211,125 +1209,47 @@ static const struct mtk_pll_data plls[] = {
>  	    0, 0, 32, 8, 0x02D4, 1, 0, 0x14, 1, 0x02D8, 0, 0x02D4),
>  };
>  
> -static int clk_mt6779_apmixed_probe(struct platform_device *pdev)
> -{
> -	struct clk_hw_onecell_data *clk_data;
> -	struct device_node *node = pdev->dev.of_node;
> -
> -	clk_data = mtk_alloc_clk_data(CLK_APMIXED_NR_CLK);
> -	if (!clk_data)
> -		return -ENOMEM;
> -
> -	mtk_clk_register_plls(&pdev->dev, plls, ARRAY_SIZE(plls), clk_data);
> -
> -	mtk_clk_register_gates(&pdev->dev, node, apmixed_clks,
> -			       ARRAY_SIZE(apmixed_clks), clk_data);
> -
> -	return of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
> -}
> -
> -static int clk_mt6779_top_probe(struct platform_device *pdev)
> -{
> -	void __iomem *base;
> -	struct clk_hw_onecell_data *clk_data;
> -	struct device_node *node = pdev->dev.of_node;
> -
> -	base = devm_platform_ioremap_resource(pdev, 0);
> -	if (IS_ERR(base))
> -		return PTR_ERR(base);
> -
> -	clk_data = mtk_alloc_clk_data(CLK_TOP_NR_CLK);
> -	if (!clk_data)
> -		return -ENOMEM;
> -
> -	mtk_clk_register_fixed_clks(top_fixed_clks, ARRAY_SIZE(top_fixed_clks),
> -				    clk_data);
> -
> -	mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs), clk_data);
> -
> -	mtk_clk_register_muxes(&pdev->dev, top_muxes,
> -			       ARRAY_SIZE(top_muxes), node,
> -			       &mt6779_clk_lock, clk_data);
> -
> -	mtk_clk_register_composites(&pdev->dev, top_aud_muxes,
> -				    ARRAY_SIZE(top_aud_muxes), base,
> -				    &mt6779_clk_lock, clk_data);
> -
> -	mtk_clk_register_composites(&pdev->dev, top_aud_divs,
> -				    ARRAY_SIZE(top_aud_divs), base,
> -				    &mt6779_clk_lock, clk_data);
> -
> -	return of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
> -}
> -
[ ... ]
> +static const struct mtk_clk_desc apmixed_desc = {
> +	.clks = apmixed_clks,
> +	.num_clks = ARRAY_SIZE(apmixed_clks),
> +	.plls = plls,
> +	.num_plls = ARRAY_SIZE(plls),
>  };
>  
> +static const struct mtk_clk_desc topck_desc = {
> +	.fixed_clks = top_fixed_clks,
> +	.num_fixed_clks = ARRAY_SIZE(top_fixed_clks),
> +	.factor_clks = top_divs,
> +	.num_factor_clks = ARRAY_SIZE(top_divs),
> +	.mux_clks = top_muxes,
> +	.num_mux_clks = ARRAY_SIZE(top_muxes),
> +	.composite_clks = top_aud_muxes_divs,
> +	.num_composite_clks = ARRAY_SIZE(top_aud_muxes_divs),
> +	.clk_lock = &mt6779_clk_lock,
> +};

[Severity: High]
Does this struct initialization fail to account for sparse DT binding IDs?

The previous code allocated clk_data using a maximum bounds macro, for
example mtk_alloc_clk_data(CLK_TOP_NR_CLK).

By switching to mtk_clk_simple_probe(), it appears __mtk_clk_simple_probe()
calculates the number of clocks by simply summing the array sizes (e.g.
num_fixed_clks + num_factor_clks + ...), which may total fewer than 100
elements.

However, the clock registration functions like mtk_clk_register_composites()
write directly into clk_data->hws[mc->id] = hw, where mc->id uses the sparse
DT binding IDs (such as CLK_TOP_UNIVPLL_D3_D16, which is 152).

Can this overflow the dynamically allocated clk_data->hws flexible array and
corrupt heap memory during probe?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261013151734.3177690-1-akkun11.open@gmail.com?part=19

  reply	other threads:[~2026-10-13 16:31 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-13 15:16 [PATCH v2 00/35] clk: mediatek: Migrate to common probe/remove helpers and fix memory leaks Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 01/35] clk: mediatek: mt2712: Fix memory leak on module removal Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 02/35] clk: mediatek: mt6795: " Akari Tsuyukusa
2026-10-13 15:36   ` sashiko-bot
2026-10-13 15:17 ` [PATCH v2 03/35] clk: mediatek: mt7622: " Akari Tsuyukusa
2026-10-13 15:34   ` sashiko-bot
2026-10-13 15:17 ` [PATCH v2 04/35] clk: mediatek: mt8135: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 05/35] clk: mediatek: mt8173: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 06/35] clk: mediatek: mt8192: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 07/35] clk: mediatek: mt6735: Add missing MODULE_DEVICE_TABLE() Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 08/35] clk: mediatek: mt7988-apmixed: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 09/35] clk: mediatek: Fix index in composite clock unwind path Akari Tsuyukusa
2026-10-13 15:49   ` sashiko-bot
2026-10-13 15:17 ` [PATCH v2 10/35] clk: mediatek: Fix memory leak in mtk_clk_register_gate() Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 11/35] clk: mediatek: return 0 instead of r in __mtk_clk_simple_probe() Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 12/35] clk: mediatek: Add cpumux support to common probe/remove helpers Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 13/35] clk: mediatek: Add PLL " Akari Tsuyukusa
2026-10-13 15:58   ` sashiko-bot
2026-10-13 15:17 ` [PATCH v2 14/35] clk: mediatek: Add child-device population to " Akari Tsuyukusa
2026-10-13 16:10   ` sashiko-bot
2026-10-13 15:17 ` [PATCH v2 15/35] clk: mediatek: Add FHCTL support to common " Akari Tsuyukusa
2026-10-13 16:09   ` sashiko-bot
2026-10-13 15:17 ` [PATCH v2 16/35] clk: mediatek: mt2701: Switch " Akari Tsuyukusa
2026-10-13 16:23   ` sashiko-bot
2026-10-13 15:17 ` [PATCH v2 17/35] clk: mediatek: mt2712-apmixedsys: " Akari Tsuyukusa
2026-10-13 16:20   ` sashiko-bot
2026-10-13 15:17 ` [PATCH v2 18/35] clk: mediatek: mt6735-apmixedsys: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 19/35] clk: mediatek: mt6779: " Akari Tsuyukusa
2026-10-13 16:31   ` sashiko-bot [this message]
2026-10-13 15:17 ` [PATCH v2 20/35] clk: mediatek: mt6795: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 21/35] clk: mediatek: mt6797: " Akari Tsuyukusa
2026-10-13 16:39   ` sashiko-bot
2026-10-13 15:17 ` [PATCH v2 22/35] clk: mediatek: mt7622: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 23/35] clk: mediatek: mt7981-apmixed: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 24/35] clk: mediatek: mt7986-apmixed: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 25/35] clk: mediatek: mt7988-apmixed: " Akari Tsuyukusa
2026-10-13 16:52   ` sashiko-bot
2026-10-13 15:17 ` [PATCH v2 26/35] clk: mediatek: mt8135-apmixedsys: " Akari Tsuyukusa
2026-10-13 16:50   ` sashiko-bot
2026-10-13 15:17 ` [PATCH v2 27/35] clk: mediatek: mt8167-apmixedsys: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 28/35] clk: mediatek: mt8173-infracfg: " Akari Tsuyukusa
2026-10-13 17:01   ` sashiko-bot
2026-10-13 15:17 ` [PATCH v2 29/35] clk: mediatek: mt8183: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 30/35] clk: mediatek: mt8186-apmixedsys: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 31/35] clk: mediatek: mt8188-apmixedsys: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 32/35] clk: mediatek: mt8192: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 33/35] clk: mediatek: mt8195: " Akari Tsuyukusa
2026-10-13 15:17 ` [PATCH v2 34/35] clk: mediatek: mt8196: " Akari Tsuyukusa
2026-10-13 17:24   ` sashiko-bot
2026-10-13 15:17 ` [PATCH v2 35/35] clk: mediatek: mt8516-apmixedsys: " Akari Tsuyukusa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=sashiko-outbox-170116@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=akkun11.open@gmail.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.