[PATCH 4.14 163/173] ASoC: samsung: i2s: Fix error handling path in i2s_set_sysclk()

From: Greg Kroah-Hartman
Date: Mon Sep 24 2018 - 08:25:38 EST


4.14-stable review patch. If anyone has any objections, please let me know.

------------------

From: Christophe Jaillet <christophe.jaillet@xxxxxxxxxx>

commit 6431a7e36652517df82855ee79c8240001812a55 upstream.

If 'clk_prepare_enable()' fails, we must 'put' the corresponding clock.
Othewise, there is a resource leak.

Fixes: f5c97c7b0438 ("ASoC: samsung: i2s: Handle return value of clk_prepare_enable.")
Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx>
Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@xxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>

---
sound/soc/samsung/i2s.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

--- a/sound/soc/samsung/i2s.c
+++ b/sound/soc/samsung/i2s.c
@@ -552,8 +552,11 @@ static int i2s_set_sysclk(struct snd_soc
}

ret = clk_prepare_enable(i2s->op_clk);
- if (ret)
+ if (ret) {
+ clk_put(i2s->op_clk);
+ i2s->op_clk = NULL;
goto err;
+ }
i2s->rclk_srcrate = clk_get_rate(i2s->op_clk);

/* Over-ride the other's */