ASoC: wm8994: Fix potential deadlock
[ Upstream commit9529dc167f] Fix this by dropping wm8994->accdet_lock while calling cancel_delayed_work_sync(&wm8994->mic_work) in wm1811_jackdet_irq(). Fixes:c0cc3f1665("ASoC: wm8994: Allow a delay between jack insertion and microphone detect") Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20221209091657.1183-1-m.szyprowski@samsung.com Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
e4a8573b04
commit
c0ae46693b
1 changed files with 5 additions and 0 deletions
|
|
@ -3853,7 +3853,12 @@ static irqreturn_t wm1811_jackdet_irq(int irq, void *data)
|
|||
} else {
|
||||
dev_dbg(component->dev, "Jack not detected\n");
|
||||
|
||||
/* Release wm8994->accdet_lock to avoid deadlock:
|
||||
* cancel_delayed_work_sync() takes wm8994->mic_work internal
|
||||
* lock and wm1811_mic_work takes wm8994->accdet_lock */
|
||||
mutex_unlock(&wm8994->accdet_lock);
|
||||
cancel_delayed_work_sync(&wm8994->mic_work);
|
||||
mutex_lock(&wm8994->accdet_lock);
|
||||
|
||||
snd_soc_component_update_bits(component, WM8958_MICBIAS2,
|
||||
WM8958_MICB2_DISCH, WM8958_MICB2_DISCH);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue