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@xxxxxxxxxxx> >--- > 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