]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/6.6.26/asoc-wm_adsp-fix-missing-mutex_lock-in-wm_adsp_write.patch
Linux 6.6.26
[thirdparty/kernel/stable-queue.git] / releases / 6.6.26 / asoc-wm_adsp-fix-missing-mutex_lock-in-wm_adsp_write.patch
CommitLineData
ea78042b
SL
1From 12908a3081c979fc2655db7d1112f8d0e63354de Mon Sep 17 00:00:00 2001
2From: Sasha Levin <sashal@kernel.org>
3Date: Thu, 7 Mar 2024 11:02:27 +0000
4Subject: ASoC: wm_adsp: Fix missing mutex_lock in wm_adsp_write_ctl()
5
6From: Richard Fitzgerald <rf@opensource.cirrus.com>
7
8[ Upstream commit f193957b0fbbba397c8bddedf158b3bf7e4850fc ]
9
10wm_adsp_write_ctl() must hold the pwr_lock mutex when calling
11cs_dsp_get_ctl().
12
13This was previously partially fixed by commit 781118bc2fc1
14("ASoC: wm_adsp: Fix missing locking in wm_adsp_[read|write]_ctl()")
15but this only put locking around the call to cs_dsp_coeff_write_ctrl(),
16missing the call to cs_dsp_get_ctl().
17
18Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
19Fixes: 781118bc2fc1 ("ASoC: wm_adsp: Fix missing locking in wm_adsp_[read|write]_ctl()")
20Link: https://msgid.link/r/20240307110227.41421-1-rf@opensource.cirrus.com
21Signed-off-by: Mark Brown <broonie@kernel.org>
22Signed-off-by: Sasha Levin <sashal@kernel.org>
23---
24 sound/soc/codecs/wm_adsp.c | 3 ++-
25 1 file changed, 2 insertions(+), 1 deletion(-)
26
27diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c
28index 72b90a7ee4b68..b9c20e29fe63e 100644
29--- a/sound/soc/codecs/wm_adsp.c
30+++ b/sound/soc/codecs/wm_adsp.c
31@@ -683,11 +683,12 @@ static void wm_adsp_control_remove(struct cs_dsp_coeff_ctl *cs_ctl)
32 int wm_adsp_write_ctl(struct wm_adsp *dsp, const char *name, int type,
33 unsigned int alg, void *buf, size_t len)
34 {
35- struct cs_dsp_coeff_ctl *cs_ctl = cs_dsp_get_ctl(&dsp->cs_dsp, name, type, alg);
36+ struct cs_dsp_coeff_ctl *cs_ctl;
37 struct wm_coeff_ctl *ctl;
38 int ret;
39
40 mutex_lock(&dsp->cs_dsp.pwr_lock);
41+ cs_ctl = cs_dsp_get_ctl(&dsp->cs_dsp, name, type, alg);
42 ret = cs_dsp_coeff_write_ctrl(cs_ctl, 0, buf, len);
43 mutex_unlock(&dsp->cs_dsp.pwr_lock);
44
45--
462.43.0
47