[PATCH v5 1/4] ASoC: Intel: bytcr_rt5640: Fix MCLK leak on platform_clock_control error

aravindanilraj0702@gmail.com posted 4 patches 15 hours ago
[PATCH v5 1/4] ASoC: Intel: bytcr_rt5640: Fix MCLK leak on platform_clock_control error
Posted by aravindanilraj0702@gmail.com 15 hours ago
From: Aravind Anilraj <aravindanilraj0702@gmail.com>

If byt_rt5640_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@gmail.com>
---
 sound/soc/intel/boards/bytcr_rt5640.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/sound/soc/intel/boards/bytcr_rt5640.c b/sound/soc/intel/boards/bytcr_rt5640.c
index 103e0b445603..cd611c0da4e1 100644
--- a/sound/soc/intel/boards/bytcr_rt5640.c
+++ b/sound/soc/intel/boards/bytcr_rt5640.c
@@ -285,10 +285,12 @@ 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\n");
+			dev_err(card->dev, "could not configure MCLK state");
 			return ret;
 		}
 		ret = byt_rt5640_prepare_and_enable_pll1(codec_dai, 48000);
+		if (ret < 0)
+			clk_disable_unprepare(priv->mclk);
 	} else {
 		/*
 		 * Set codec clock source to internal clock before
@@ -303,7 +305,7 @@ 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);
+		dev_err(card->dev, "can't set codec sysclk");
 		return ret;
 	}
 
-- 
2.47.3