[no subject]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Seungbin Lee <seungbin.lee@xxxxxxxxxxx
<mailto:seungbin.lee@xxxxxxxxxxx> >

Date: Wed, 18 Jun 2025 13:33:02 +0900

Subject: [PATCH] ASoC: soc-compress: Fix race condition in soc_compr_open_fe

 

If the soc_compr_trigger_fe function is called during
snd_soc_dpcm_runtime_update execution,

the FE's DPCM runtime update variable may be changed.

Then the BE list connected to the FE flies away, and the BE cannot be
closed.

 

This needs to be protected by the snd_soc_dpcm_mutex_lock.

 

Change-Id: Ibfd1712e6baf41a30afa357a91ada83d205f968b

Signed-off-by: Seungbin Lee <seungbin.lee@xxxxxxxxxxx
<mailto:seungbin.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 fc8db54352541..1a2a3fe6a2340 100644

--- a/sound/soc/soc-compress.c

+++ b/sound/soc/soc-compress.c

@@ -286,6 +286,8 @@ static int soc_compr_trigger_fe(struct snd_compr_stream
*cstream, int cmd)

 

           snd_soc_card_mutex_lock(fe->card);

 

+         snd_soc_dpcm_mutex_lock(fe);

+

          ret = snd_soc_dai_compr_trigger(cpu_dai, cstream, cmd);

          if (ret < 0)

                    goto out;

@@ -315,6 +317,8 @@ static int soc_compr_trigger_fe(struct snd_compr_stream
*cstream, int cmd)

 

 out:

          fe->dpcm[stream].runtime_update = SND_SOC_DPCM_UPDATE_NO;

+         snd_soc_dpcm_mutex_unlock(fe);

+

          snd_soc_card_mutex_unlock(fe->card);

          return ret;

}

-- 

2.34.1

 





[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux