]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/6.6.26/asoc-rt712-sdca-sdw-fix-locking-sequence.patch
Linux 6.6.26
[thirdparty/kernel/stable-queue.git] / releases / 6.6.26 / asoc-rt712-sdca-sdw-fix-locking-sequence.patch
CommitLineData
ea78042b
SL
1From 4b19b25e033276fc8cce2ae32a0ff6f160e52580 Mon Sep 17 00:00:00 2001
2From: Sasha Levin <sashal@kernel.org>
3Date: Mon, 25 Mar 2024 17:18:15 -0500
4Subject: ASoC: rt712-sdca-sdw: fix locking sequence
5
6From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
7
8[ Upstream commit c8b2e5c1b959d100990e4f0cbad38e7d047bb97c ]
9
10The disable_irq_lock protects the 'disable_irq' value, we need to lock
11before testing it.
12
13Fixes: 7a8735c1551e ("ASoC: rt712-sdca: fix for JD event handling in ClockStop Mode0")
14Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
15Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
16Reviewed-by: Chao Song <chao.song@linux.intel.com>
17Link: https://msgid.link/r/20240325221817.206465-5-pierre-louis.bossart@linux.intel.com
18Signed-off-by: Mark Brown <broonie@kernel.org>
19Signed-off-by: Sasha Levin <sashal@kernel.org>
20---
21 sound/soc/codecs/rt712-sdca-sdw.c | 5 +++--
22 1 file changed, 3 insertions(+), 2 deletions(-)
23
24diff --git a/sound/soc/codecs/rt712-sdca-sdw.c b/sound/soc/codecs/rt712-sdca-sdw.c
25index 6b644a89c5890..ba877432cea61 100644
26--- a/sound/soc/codecs/rt712-sdca-sdw.c
27+++ b/sound/soc/codecs/rt712-sdca-sdw.c
28@@ -438,13 +438,14 @@ static int __maybe_unused rt712_sdca_dev_resume(struct device *dev)
29 return 0;
30
31 if (!slave->unattach_request) {
32+ mutex_lock(&rt712->disable_irq_lock);
33 if (rt712->disable_irq == true) {
34- mutex_lock(&rt712->disable_irq_lock);
35+
36 sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK1, SDW_SCP_SDCA_INTMASK_SDCA_0);
37 sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK2, SDW_SCP_SDCA_INTMASK_SDCA_8);
38 rt712->disable_irq = false;
39- mutex_unlock(&rt712->disable_irq_lock);
40 }
41+ mutex_unlock(&rt712->disable_irq_lock);
42 goto regmap_sync;
43 }
44
45--
462.43.0
47