On Thu, Jun 15, 2023 at 01:56:35AM +0100, Mark Brown wrote: > On Tue, Jun 13, 2023 at 02:23:50PM +0800, yixuanjiang wrote: > > Modify the error handling flow by release lock. > > The require pcm_mutex will keep holding if open fail. > > > +++ b/sound/soc/soc-compress.c > > @@ -166,6 +166,7 @@ static int soc_compr_open_fe(struct snd_compr_stream *cstream) > > snd_soc_dai_compr_shutdown(cpu_dai, cstream, 1); > > out: > > dpcm_path_put(&list); > > + mutex_unlock(&fe->card->pcm_mutex); > > be_err: > > This is really hard to follow due to the lack of any mutex_lock()s in > the function, I think because this is intended to undo > snd_soc_dpcm_mutex_lock(fe) but if that's the case why is it not using > snd_soc_dpcm_mutex_unlock(fe) like the success path does? Given the use > of classes not doing that looks like it'll create lockdep issues. > > I'd expect the unlock to match the lock. Yes, and judging from the context of the patch I believe this was based off of stable 5.15.y tree. The locking has been refactored since. So Yixuan, please rebase/adjust your patch on top of Linus's mainline tree and resend. Thanks! -- Carlos Llamas