| From ac0a68997935c4acb92eaae5ad8982e0bb432d56 Mon Sep 17 00:00:00 2001 |
| From: Matthias Reichl <hias@horus.com> |
| Date: Thu, 20 Feb 2020 21:29:56 +0100 |
| Subject: ASoC: pcm512x: Fix unbalanced regulator enable call in probe error path |
| |
| From: Matthias Reichl <hias@horus.com> |
| |
| commit ac0a68997935c4acb92eaae5ad8982e0bb432d56 upstream. |
| |
| When we get a clock error during probe we have to call |
| regulator_bulk_disable before bailing out, otherwise we trigger |
| a warning in regulator_put. |
| |
| Fix this by using "goto err" like in the error cases above. |
| |
| Fixes: 5a3af1293194d ("ASoC: pcm512x: Add PCM512x driver") |
| Signed-off-by: Matthias Reichl <hias@horus.com> |
| Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> |
| Link: https://lore.kernel.org/r/20200220202956.29233-1-hias@horus.com |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/soc/codecs/pcm512x.c | 8 +++++--- |
| 1 file changed, 5 insertions(+), 3 deletions(-) |
| |
| --- a/sound/soc/codecs/pcm512x.c |
| +++ b/sound/soc/codecs/pcm512x.c |
| @@ -1564,13 +1564,15 @@ int pcm512x_probe(struct device *dev, st |
| } |
| |
| pcm512x->sclk = devm_clk_get(dev, NULL); |
| - if (PTR_ERR(pcm512x->sclk) == -EPROBE_DEFER) |
| - return -EPROBE_DEFER; |
| + if (PTR_ERR(pcm512x->sclk) == -EPROBE_DEFER) { |
| + ret = -EPROBE_DEFER; |
| + goto err; |
| + } |
| if (!IS_ERR(pcm512x->sclk)) { |
| ret = clk_prepare_enable(pcm512x->sclk); |
| if (ret != 0) { |
| dev_err(dev, "Failed to enable SCLK: %d\n", ret); |
| - return ret; |
| + goto err; |
| } |
| } |
| |