On Thu, 26 Mar 2020 17:46:07 +0900, Gyeongtaek Lee wrote:
Hi,
I'd like to send a patch to fix a problem in soc-compress with DPCM. soc_compr_open_fe() and soc_compr_free_fe() call snd_soc_runtime_activate() and snd_soc_runtime_deactivate() but don't lock card->pcm_mutex. It can cause lockdep error, because snd_soc_runtime_activate/deactivate() checks whether pcm_mutex is held using lockdep_assert_held(). I'd like to send a patch which adds mutex_lock/unlock() before and after of the snd_soc_runtime_activate/deactivate() call. If there is anything should be changed in my patch or email, please let me know it. I'll really appreciate it.
Gyeongtaek Lee (1): ASoC: soc-compress: lock pcm_mutex to resolve lockdep error
sound/soc/soc-compress.c | 4 ++++ 1 file changed, 4 insertions(+)
base-commit: 76ccd234269bd05debdbc12c96eafe62dd9a6180
snd_soc_runtime_activate() and snd_soc_runtime_deactivate() require pcm_mutex lock.
Signed-off-by: Gyeongtaek Lee gt82.lee@samsung.com
sound/soc/soc-compress.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/sound/soc/soc-compress.c b/sound/soc/soc-compress.c index 392a1c5b15d3..42d416ac7e9b 100644 --- a/sound/soc/soc-compress.c +++ b/sound/soc/soc-compress.c @@ -207,7 +207,9 @@ static int soc_compr_open_fe(struct snd_compr_stream
*cstream)
fe->dpcm[stream].state = SND_SOC_DPCM_STATE_OPEN; fe->dpcm[stream].runtime_update = SND_SOC_DPCM_UPDATE_NO;
mutex_lock_nested(&fe->pcm_mutex, fe->pcm_subclass); snd_soc_runtime_activate(fe, stream);
mutex_unlock(&fe->pcm_mutex);
mutex_unlock(&fe->card->mutex);
@@ -285,7 +287,9 @@ static int soc_compr_free_fe(struct snd_compr_stream
*cstream)
else stream = SNDRV_PCM_STREAM_CAPTURE;
mutex_lock_nested(&fe->pcm_mutex, fe->pcm_subclass); snd_soc_runtime_deactivate(fe, stream);
mutex_unlock(&fe->pcm_mutex);
fe->dpcm[stream].runtime_update = SND_SOC_DPCM_UPDATE_FE;
-- 2.21.0
Hi,
Resending patch with removing tab expansion.
Lee