ASoC: dapm: Fix deadlock on auto-disable mux controls
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Fri, 26 Jun 2015 09:39:43 +0000 (10:39 +0100)
committerMark Brown <broonie@kernel.org>
Fri, 26 Jun 2015 11:46:55 +0000 (12:46 +0100)
The commit 02aa78abec6e ("ASoC: DAPM: Add APIs to create individual DAPM
controls.") added locking to the snd_soc_dapm_new_control function but
did not update the call to snd_soc_dapm_new_control in the auto-disable
mux code, this appears to be because the patches were sent at fairly
similar times.

This patch change the call in the auto-disable mux code to use the new
snd_soc_dapm_new_control_unlocked function instead.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-dapm.c

index aa327c92480c56c2609699380594a75ad765fbda..a47a8ce7a5ea04f2cc98677c4b349635071b1a73 100644 (file)
@@ -389,8 +389,8 @@ static int dapm_kcontrol_data_alloc(struct snd_soc_dapm_widget *widget,
 
                        data->value = template.on_val;
 
-                       data->widget = snd_soc_dapm_new_control(widget->dapm,
-                                       &template);
+                       data->widget = snd_soc_dapm_new_control_unlocked(
+                                               widget->dapm, &template);
                        if (!data->widget) {
                                ret = -ENOMEM;
                                goto err_name;