diff options
author | Christophe Jaillet <christophe.jaillet@wanadoo.fr> | 2017-09-03 15:29:02 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2017-09-04 15:40:30 +0300 |
commit | 6431a7e36652517df82855ee79c8240001812a55 (patch) | |
tree | 1d54c3d79cdb38d9304f92e4c148a202e4a7426f /sound/soc/samsung | |
parent | 1107a293b7c33723ace2a8d18f5c6febcd576d7a (diff) | |
download | linux-6431a7e36652517df82855ee79c8240001812a55.tar.xz |
ASoC: samsung: i2s: Fix error handling path in i2s_set_sysclk()
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@wanadoo.fr>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/samsung')
-rw-r--r-- | sound/soc/samsung/i2s.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c index 10a4da06c0a1..d7e7f4244d38 100644 --- a/sound/soc/samsung/i2s.c +++ b/sound/soc/samsung/i2s.c @@ -552,8 +552,11 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, } 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 */ |