| From c4204960e9d0ba99459dbf1db918f99a45e7a62a Mon Sep 17 00:00:00 2001 |
| From: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> |
| Date: Tue, 18 Feb 2014 15:22:12 +0000 |
| Subject: Input - arizona-haptics: Fix double lock of dapm_mutex |
| |
| From: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> |
| |
| commit c4204960e9d0ba99459dbf1db918f99a45e7a62a upstream. |
| |
| snd_soc_dapm_sync takes the dapm_mutex internally, but we currently take |
| it externally as well. This patch fixes this. |
| |
| Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> |
| Signed-off-by: Mark Brown <broonie@linaro.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/input/misc/arizona-haptics.c | 11 ++++------- |
| 1 file changed, 4 insertions(+), 7 deletions(-) |
| |
| --- a/drivers/input/misc/arizona-haptics.c |
| +++ b/drivers/input/misc/arizona-haptics.c |
| @@ -77,16 +77,14 @@ static void arizona_haptics_work(struct |
| return; |
| } |
| |
| + mutex_unlock(dapm_mutex); |
| + |
| ret = snd_soc_dapm_sync(arizona->dapm); |
| if (ret != 0) { |
| dev_err(arizona->dev, "Failed to sync DAPM: %d\n", |
| ret); |
| - mutex_unlock(dapm_mutex); |
| return; |
| } |
| - |
| - mutex_unlock(dapm_mutex); |
| - |
| } else { |
| /* This disable sequence will be a noop if already enabled */ |
| mutex_lock_nested(dapm_mutex, SND_SOC_DAPM_CLASS_RUNTIME); |
| @@ -99,16 +97,15 @@ static void arizona_haptics_work(struct |
| return; |
| } |
| |
| + mutex_unlock(dapm_mutex); |
| + |
| ret = snd_soc_dapm_sync(arizona->dapm); |
| if (ret != 0) { |
| dev_err(arizona->dev, "Failed to sync DAPM: %d\n", |
| ret); |
| - mutex_unlock(dapm_mutex); |
| return; |
| } |
| |
| - mutex_unlock(dapm_mutex); |
| - |
| ret = regmap_update_bits(arizona->regmap, |
| ARIZONA_HAPTICS_CONTROL_1, |
| ARIZONA_HAP_CTRL_MASK, |