Re: [PATCH] clk: cdce925: Size the PLL child name buffer for any int

From: Jerome Brunet

Date: Thu Oct 15 2026 - 06:26:32 EST


On jeu. 15 oct. 2026 at 11:18, Mike Looijmans <mike.looijmans@xxxxxxxx> wrote:

> Met vriendelijke groet / kind regards,
>
> Mike Looijmans
> System Expert
>
> [cid:topic_3fa16e61-8444-4c42-bbdd-4da663de69ef.png]
> TOPIC Embedded Products B.V.
> Materiaalweg 4
> 5681 RJ Best T: +31 (0) 499 33 69 69
> The Netherlands E: mike.looijmans@xxxxxxxx<mailto:mike.looijmans@xxxxxxxx>
> W: www.topic.nl<http://www.topic.nl>
> L: LinkedIn<https://www.linkedin.com/company/topic-embedded-systems>
>
> Please consider the environment before printing this e-mail
>
> On 10/14/26 18:11, Jerome Brunet wrote:
>
> The PLL child node name is built from "PLL%d" in a 6 byte stack buffer.
> The PLL index is bounded by the chip's num_plls, at most 4, but GCC
> cannot see that bound and, with W=1, warns that the formatted string
> may not fit.
>
> Make the buffer large enough to hold any int and use snprintf() with
> sizeof() so the size stays tied to the declaration.
>
> Fixes: 19fbbbbcd3a3 ("Add TI CDCE925 I2C controlled clock synthesizer driver")
> Signed-off-by: Jerome Brunet <jbrunet@xxxxxxxxxxxx><mailto:jbrunet@xxxxxxxxxxxx>
> ---
> drivers/clk/clk-cdce925.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/clk/clk-cdce925.c b/drivers/clk/clk-cdce925.c
> index 4d49cc1659c0..56b69d4fe4c2 100644
> --- a/drivers/clk/clk-cdce925.c
> +++ b/drivers/clk/clk-cdce925.c
> @@ -625,7 +625,12 @@ static int cdce925_probe(struct i2c_client *client)
> int i;
> int err;
> struct device_node *np_output;
> - char child_name[6];
> + /*
> + * The PLL number isn't a compile time constant so GCC can't infer
> + * the number. Make the stack buffer large enough to hold any int
> + * so Wformat-truncation does not complain.
> + */
> + char child_name[15];
> struct regmap_config config = {
> .name = "configuration0",
> .reg_bits = 8,
> @@ -697,7 +702,7 @@ static int cdce925_probe(struct i2c_client *client)
> dev_err(&client->dev, "Failed register PLL %d\n", i);
> goto error;
> }
> - sprintf(child_name, "PLL%d", i+1);
> + snprintf(child_name, sizeof(child_name), "PLL%d", i + 1);
>
> This would also avoid the warning, without using a larger stack:
>
> sprintf(child_name, "PLL%c", i + '1');
>

If you keep snprintf and properly cast i, possibly.
Feel free to send a follow-up change.

NOTE: please reply to PATCHes using plain text emails.

>
>
>
> np_output = of_get_child_by_name(node, child_name);
> if (!np_output)
> continue;
>
> ---
> base-commit: a5929cbf1406eb3da217d4a182ff6c5b73f3ed91
> base-tree: git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next
> change-id: 20261014-cdce925-truncate-child-name-a4d9db9cf003
>
> Best regards,
> --
> Jerome
>
>
>

--
Jerome