Commit 8089a49d authored by Axel Lin's avatar Axel Lin Committed by Mark Brown

ASoC: wm8955: fix resource reclaim in wm8955_register error path

This patch fixes the error path in wm8955_register to properly free resources.
Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent db1e18de
...@@ -964,7 +964,8 @@ static int wm8955_register(struct wm8955_priv *wm8955, ...@@ -964,7 +964,8 @@ static int wm8955_register(struct wm8955_priv *wm8955,
if (wm8955_codec) { if (wm8955_codec) {
dev_err(codec->dev, "Another WM8955 is registered\n"); dev_err(codec->dev, "Another WM8955 is registered\n");
return -EINVAL; ret = -EINVAL;
goto err;
} }
mutex_init(&codec->mutex); mutex_init(&codec->mutex);
...@@ -1047,18 +1048,19 @@ static int wm8955_register(struct wm8955_priv *wm8955, ...@@ -1047,18 +1048,19 @@ static int wm8955_register(struct wm8955_priv *wm8955,
ret = snd_soc_register_codec(codec); ret = snd_soc_register_codec(codec);
if (ret != 0) { if (ret != 0) {
dev_err(codec->dev, "Failed to register codec: %d\n", ret); dev_err(codec->dev, "Failed to register codec: %d\n", ret);
return ret; goto err_enable;
} }
ret = snd_soc_register_dai(&wm8955_dai); ret = snd_soc_register_dai(&wm8955_dai);
if (ret != 0) { if (ret != 0) {
dev_err(codec->dev, "Failed to register DAI: %d\n", ret); dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
snd_soc_unregister_codec(codec); goto err_codec;
return ret;
} }
return 0; return 0;
err_codec:
snd_soc_unregister_codec(codec);
err_enable: err_enable:
regulator_bulk_disable(ARRAY_SIZE(wm8955->supplies), wm8955->supplies); regulator_bulk_disable(ARRAY_SIZE(wm8955->supplies), wm8955->supplies);
err_get: err_get:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment