ASoC: soc-compress: Fix and add DPCM locking
authorShalini Manjunatha <quic_c_shalma@quicinc.com>
Wed, 6 Mar 2024 10:53:20 +0000 (16:23 +0530)
committerMark Brown <broonie@kernel.org>
Mon, 18 Mar 2024 14:41:51 +0000 (14:41 +0000)
We find mising DPCM locking inside soc_compr_set_params_fe
before calling dpcm_be_dai_hw_params() and dpcm_be_dai_prepare()
which cause lockdep assert for DPCM lock not held in
__soc_pcm_hw_params() and __soc_pcm_prepare()

Signed-off-by: Shalini Manjunatha <quic_c_shalma@quicinc.com>
Link: https://msgid.link/r/d985beeafdd32316eb45f20811eb7926da7a796e.1709720380.git.quic_c_shalma@quicinc.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-compress.c

index a38fee48ee005afcbb66b8d4ead712cb5d2c5af8..e692aa3b8b22f84537a3c171e0c3936c3a5f28b8 100644 (file)
@@ -385,11 +385,15 @@ static int soc_compr_set_params_fe(struct snd_compr_stream *cstream,
 
        fe->dpcm[stream].runtime_update = SND_SOC_DPCM_UPDATE_FE;
 
+       snd_soc_dpcm_mutex_lock(fe);
        ret = dpcm_be_dai_hw_params(fe, stream);
+       snd_soc_dpcm_mutex_unlock(fe);
        if (ret < 0)
                goto out;
 
+       snd_soc_dpcm_mutex_lock(fe);
        ret = dpcm_be_dai_prepare(fe, stream);
+       snd_soc_dpcm_mutex_unlock(fe);
        if (ret < 0)
                goto out;