Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 422d5243 authored by Alexey Khoroshilov's avatar Alexey Khoroshilov Committed by Greg Kroah-Hartman
Browse files

ASoC: rt5645: Fix deadlock in rt5645_jack_detect_work()



[ Upstream commit 6ef5d5b92f7117b324efaac72b3db27ae8bb3082 ]

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: default avatarAlexey Khoroshilov <khoroshilov@ispras.ru>
Link: https://lore.kernel.org/r/1707645514-21196-1-git-send-email-khoroshilov@ispras.ru


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 91b48c63
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3276,6 +3276,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_read32(rt5645->component, RT5645_A_JD_CTRL1) & 0x0020;