Re: [PATCH v4 2/4] ASoC: Intel: bytcr_rt5651: Fix MCLK leak on platform_clock_control error

From: Cezary Rojewski

Date: Mon Mar 30 2026 - 04:29:10 EST


On 2026-03-28 6:25 AM, aravindanilraj0702@xxxxxxxxx wrote:
From: Aravind Anilraj <aravindanilraj0702@xxxxxxxxx>

If byt_rt5651_prepare_and_enable_pll1() fails, the function returns
without calling clk_disable_unprepare() on priv->mclk, which was
already enabled earlier in the same code path. Add the missing
clk_disable_unprepare() call before returning the error.

Signed-off-by: Aravind Anilraj <aravindanilraj0702@xxxxxxxxx>
---
sound/soc/intel/boards/bytcr_rt5651.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/sound/soc/intel/boards/bytcr_rt5651.c b/sound/soc/intel/boards/bytcr_rt5651.c
index 68cf463f1d50..65944eb4be16 100644
--- a/sound/soc/intel/boards/bytcr_rt5651.c
+++ b/sound/soc/intel/boards/bytcr_rt5651.c
@@ -205,7 +205,7 @@ static int platform_clock_control(struct snd_soc_dapm_widget *w,
if (SND_SOC_DAPM_EVENT_ON(event)) {
ret = clk_prepare_enable(priv->mclk);
if (ret < 0) {
- dev_err(card->dev, "could not configure MCLK state");
+ dev_err(card->dev, "could not configure MCLK state\n");
return ret;
}
ret = byt_rt5651_prepare_and_enable_pll1(codec_dai, 48000, 50);
@@ -224,6 +224,8 @@ static int platform_clock_control(struct snd_soc_dapm_widget *w,
if (ret < 0) {
dev_err(card->dev, "can't set codec sysclk: %d\n", ret);
+ if (SND_SOC_DAPM_EVENT_ON(event))
+ clk_disable_unprepare(priv->mclk);

Same as for bytcr_rt5640:

This if-statement complicates the situation unnecessarily. Please do
the check in scope of "if (SND_SOC_DAPM_EVENT_ON(event))" found earlier
in this function.

return ret;
}