Commit 60884c27 authored by Dan Carpenter's avatar Dan Carpenter Committed by Mark Brown

ASoC: dapm: release lock on error paths

We added locking here but there were a couple error paths where we
forgot to drop the lock before returning.
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 7203a625
...@@ -2131,7 +2131,7 @@ static int snd_soc_dapm_add_route(struct snd_soc_dapm_context *dapm, ...@@ -2131,7 +2131,7 @@ static int snd_soc_dapm_add_route(struct snd_soc_dapm_context *dapm,
int snd_soc_dapm_add_routes(struct snd_soc_dapm_context *dapm, int snd_soc_dapm_add_routes(struct snd_soc_dapm_context *dapm,
const struct snd_soc_dapm_route *route, int num) const struct snd_soc_dapm_route *route, int num)
{ {
int i, ret; int i, ret = 0;
mutex_lock_nested(&dapm->card->dapm_mutex, SND_SOC_DAPM_CLASS_INIT); mutex_lock_nested(&dapm->card->dapm_mutex, SND_SOC_DAPM_CLASS_INIT);
for (i = 0; i < num; i++) { for (i = 0; i < num; i++) {
...@@ -2139,13 +2139,13 @@ int snd_soc_dapm_add_routes(struct snd_soc_dapm_context *dapm, ...@@ -2139,13 +2139,13 @@ int snd_soc_dapm_add_routes(struct snd_soc_dapm_context *dapm,
if (ret < 0) { if (ret < 0) {
dev_err(dapm->dev, "Failed to add route %s->%s\n", dev_err(dapm->dev, "Failed to add route %s->%s\n",
route->source, route->sink); route->source, route->sink);
return ret; break;
} }
route++; route++;
} }
mutex_unlock(&dapm->card->dapm_mutex); mutex_unlock(&dapm->card->dapm_mutex);
return 0; return ret;
} }
EXPORT_SYMBOL_GPL(snd_soc_dapm_add_routes); EXPORT_SYMBOL_GPL(snd_soc_dapm_add_routes);
...@@ -2849,6 +2849,7 @@ int snd_soc_dapm_new_controls(struct snd_soc_dapm_context *dapm, ...@@ -2849,6 +2849,7 @@ int snd_soc_dapm_new_controls(struct snd_soc_dapm_context *dapm,
{ {
struct snd_soc_dapm_widget *w; struct snd_soc_dapm_widget *w;
int i; int i;
int ret = 0;
mutex_lock_nested(&dapm->card->dapm_mutex, SND_SOC_DAPM_CLASS_INIT); mutex_lock_nested(&dapm->card->dapm_mutex, SND_SOC_DAPM_CLASS_INIT);
for (i = 0; i < num; i++) { for (i = 0; i < num; i++) {
...@@ -2857,12 +2858,13 @@ int snd_soc_dapm_new_controls(struct snd_soc_dapm_context *dapm, ...@@ -2857,12 +2858,13 @@ int snd_soc_dapm_new_controls(struct snd_soc_dapm_context *dapm,
dev_err(dapm->dev, dev_err(dapm->dev,
"ASoC: Failed to create DAPM control %s\n", "ASoC: Failed to create DAPM control %s\n",
widget->name); widget->name);
return -ENOMEM; ret = -ENOMEM;
break;
} }
widget++; widget++;
} }
mutex_unlock(&dapm->card->dapm_mutex); mutex_unlock(&dapm->card->dapm_mutex);
return 0; return ret;
} }
EXPORT_SYMBOL_GPL(snd_soc_dapm_new_controls); EXPORT_SYMBOL_GPL(snd_soc_dapm_new_controls);
......
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