From: sashiko-bot@kernel.org
To: "John Madieu" <john.madieu.xa@bp.renesas.com>
Cc: wsa+renesas@sang-engineering.com, conor+dt@kernel.org,
robh@kernel.org, devicetree@vger.kernel.org, krzk+dt@kernel.org
Subject: Re: [PATCH v6 12/16] ASoC: rsnd: adg: Add per-SSI ADG and SSIF supply clock management
Date: Thu, 14 May 2026 04:09:12 +0000 [thread overview]
Message-ID: <20260514040912.DD2C8C2BCB7@smtp.kernel.org> (raw)
In-Reply-To: <20260512182631.3842065-13-john.madieu.xa@bp.renesas.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Bitwise OR error code corruption and unbalanced clock unprepare in rsnd_adg_clk_control()
- [High] Missing error handling cleanup in rsnd_adg_probe() leads to Use-After-Free
--
commit 96241f9dadb676a5e8a4489644874b25a85bb097
Author: John Madieu <john.madieu.xa@bp.renesas.com>
ASoC: rsnd: adg: Add per-SSI ADG and SSIF supply clock management
This commit introduces explicit clock management for SSI audio interfaces
on the RZ/G3E, which differs from previous R-Car generations. It adds
per-SSI ADG clocks and a shared SSIF supply clock, acquiring them via
optional APIs to remain transparent to other platforms.
> diff --git a/sound/soc/renesas/rcar/adg.c b/sound/soc/renesas/rcar/adg.c
> --- a/sound/soc/renesas/rcar/adg.c
> +++ b/sound/soc/renesas/rcar/adg.c
[ ... ]
> @@ -417,6 +448,29 @@ int rsnd_adg_clk_control(struct rsnd_priv *priv, int enable)
> }
> }
>
> + /*
> + * rsnd_adg_clk_enable() might return error (_disable() will not).
> + * We need to rollback in such case
> + */
> + /*
> + * RZ/G3E per-SSI ADG and SSIF supply clocks.
> + *
> + * Follow the same style as for_each_rsnd_clkin() above: on enable,
> + * try to prepare every clock and accumulate the error. On disable
> + * (which is also used as the rollback path below), unprepare every
> + * clock. Absent optional clocks are NULL, for which clk_prepare()
> + * and clk_unprepare() are no-ops.
> + */
> + if (enable) {
> + for (i = 0; i < ADG_SSI_MAX; i++)
> + ret |= clk_prepare(adg->clk_adg_ssi[i]);
> + ret |= clk_prepare(adg->clk_ssif_supply);
Does using bitwise OR to accumulate error codes corrupt the returned error
value? clk_prepare() returns negative error codes like -ENOMEM, and
accumulating them with a bitwise OR could return a meaningless value to
the caller, breaking probe deferral.
Also, if one of these clocks fails to prepare, the loop does not break.
The subsequent rollback path will then unconditionally call clk_unprepare()
on all clocks. Does calling clk_unprepare() on a clock that failed to prepare
trigger a kernel warning and underflow its state?
Additionally, if the preceding for_each_rsnd_clkin loop failed, the ret
variable is already less than zero. This block will still execute because
enable is true, which will overwrite the valid error code from the first loop.
> + } else {
> + clk_unprepare(adg->clk_ssif_supply);
> + for (i = 0; i < ADG_SSI_MAX; i++)
> + clk_unprepare(adg->clk_adg_ssi[i]);
> + }
> +
[ ... ]
> @@ -798,6 +877,11 @@ int rsnd_adg_probe(struct rsnd_priv *priv)
> if (ret)
> return ret;
>
> + /* RZ/G3E-specific: per-SSI ADG and SSIF supply clocks */
> + ret = rsnd_adg_get_ssi_clks(priv);
> + if (ret)
> + return ret;
If rsnd_adg_get_ssi_clks() returns an error here (such as -EPROBE_DEFER),
does returning directly skip deregistering the clock provider?
Earlier in rsnd_adg_probe(), the clock provider is registered via
rsnd_adg_get_clkout() which ultimately adds the provider.
Since the memory for adg is managed by devm_kzalloc(), if this probe fails,
the memory is automatically freed. If the clock provider remains registered
with the subsystem, could this lead to a use-after-free when accessed?
> +
> ret = rsnd_adg_clk_enable(priv);
> if (ret)
> return ret;
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260512182631.3842065-1-john.madieu.xa@bp.renesas.com?part=12
next prev parent reply other threads:[~2026-05-14 4:09 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-12 18:26 [PATCH v6 00/16] ASoC: rsnd: Add RZ/G3E audio driver support John Madieu
2026-05-12 18:26 ` [PATCH v6 01/16] ASoC: dt-bindings: sound: Add DT binding for RZ/G3E sound John Madieu
2026-05-13 23:45 ` sashiko-bot
2026-05-12 18:26 ` [PATCH v6 02/16] ASoC: rsnd: Fix RSND_SOC_MASK width to single nibble John Madieu
2026-05-12 18:26 ` [PATCH v6 03/16] ASoC: rsnd: Add reset controller support to rsnd_mod John Madieu
2026-05-14 0:07 ` sashiko-bot
2026-05-12 18:26 ` [PATCH v6 04/16] ASoC: rsnd: Support hyphen or dot in indexed clock and reset names John Madieu
2026-05-14 0:45 ` Mark Brown
2026-05-12 18:26 ` [PATCH v6 05/16] ASoC: rsnd: Add RZ/G3E SoC probing and register map John Madieu
2026-05-14 0:51 ` sashiko-bot
2026-05-12 18:26 ` [PATCH v6 06/16] ASoC: rsnd: Add audmacpp clock and reset support for RZ/G3E John Madieu
2026-05-14 1:11 ` sashiko-bot
2026-05-12 18:26 ` [PATCH v6 07/16] ASoC: rsnd: Refactor DMA address tables with named structs John Madieu
2026-05-12 18:26 ` [PATCH v6 08/16] ASoC: rsnd: Add RZ/G3E DMA address calculation support John Madieu
2026-05-14 2:13 ` sashiko-bot
2026-05-12 18:26 ` [PATCH v6 09/16] ASoC: rsnd: ssui: Add RZ/G3E SSIU BUSIF support John Madieu
2026-05-13 0:35 ` Kuninori Morimoto
2026-05-13 5:04 ` John Madieu
2026-05-13 23:02 ` Kuninori Morimoto
2026-05-13 9:41 ` Geert Uytterhoeven
2026-05-13 15:30 ` John Madieu
2026-05-14 2:58 ` sashiko-bot
2026-05-12 18:26 ` [PATCH v6 10/16] ASoC: rsnd: Add SSI reset support for RZ/G3E platform John Madieu
2026-05-14 3:22 ` sashiko-bot
2026-05-12 18:26 ` [PATCH v6 11/16] ASoC: rsnd: Add ADG reset support for RZ/G3E John Madieu
2026-05-14 3:46 ` sashiko-bot
2026-05-12 18:26 ` [PATCH v6 12/16] ASoC: rsnd: adg: Add per-SSI ADG and SSIF supply clock management John Madieu
2026-05-14 4:09 ` sashiko-bot [this message]
2026-05-12 18:26 ` [PATCH v6 13/16] ASoC: rsnd: adg: Look up RZ/G3E clkin under audio-clk{a,b,c,i} John Madieu
2026-05-12 18:26 ` [PATCH v6 14/16] ASoC: rsnd: src: Add SRC reset and clock support for RZ/G3E John Madieu
2026-05-13 0:44 ` Kuninori Morimoto
2026-05-13 5:17 ` John Madieu
2026-05-14 5:04 ` sashiko-bot
2026-05-12 18:26 ` [PATCH v6 15/16] ASoC: rsnd: Support unprefixed DT node names " John Madieu
2026-05-12 18:26 ` [PATCH v6 16/16] ASoC: rsnd: Add system suspend/resume support John Madieu
2026-05-14 0:46 ` Mark Brown
2026-05-14 6:09 ` sashiko-bot
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=20260514040912.DD2C8C2BCB7@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=john.madieu.xa@bp.renesas.com \
--cc=krzk+dt@kernel.org \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=wsa+renesas@sang-engineering.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox