summaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
authorAlexey Khoroshilov <khoroshilov@ispras.ru>2024-02-11 12:58:34 +0300
committerMark Brown <broonie@kernel.org>2024-02-11 16:58:49 +0000
commit6ef5d5b92f7117b324efaac72b3db27ae8bb3082 (patch)
tree4361fd86c00982dc5f2eb54f6629a6f180a70b20 /sound/soc
parent727b943263dc98a7aca355cc0302158218f71543 (diff)
downloadlinux-stable-6ef5d5b92f7117b324efaac72b3db27ae8bb3082.tar.gz
linux-stable-6ef5d5b92f7117b324efaac72b3db27ae8bb3082.tar.bz2
linux-stable-6ef5d5b92f7117b324efaac72b3db27ae8bb3082.zip
ASoC: rt5645: Fix deadlock in rt5645_jack_detect_work()
There is a path in rt5645_jack_detect_work(), where rt5645->jd_mutex is left locked forever. That may lead to deadlock when rt5645_jack_detect_work() is called for the second time. Found by Linux Verification Center (linuxtesting.org) with SVACE. Fixes: cdba4301adda ("ASoC: rt5650: add mutex to avoid the jack detection failure") Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> Link: https://lore.kernel.org/r/1707645514-21196-1-git-send-email-khoroshilov@ispras.ru Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/codecs/rt5645.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c
index 5150d6ee3748..0cc2fa131d48 100644
--- a/sound/soc/codecs/rt5645.c
+++ b/sound/soc/codecs/rt5645.c
@@ -3317,6 +3317,7 @@ static void rt5645_jack_detect_work(struct work_struct *work)
report, SND_JACK_HEADPHONE);
snd_soc_jack_report(rt5645->mic_jack,
report, SND_JACK_MICROPHONE);
+ mutex_unlock(&rt5645->jd_mutex);
return;
case 4:
val = snd_soc_component_read(rt5645->component, RT5645_A_JD_CTRL1) & 0x0020;