Re: [PATCH v2] ALSA: pcm: Serialize snd_pcm_suspend_all() with open_mutex
From: Takashi Iwai
Date: Fri Mar 27 2026 - 10:17:49 EST
On Fri, 27 Mar 2026 14:59:45 +0100,
Cássio Gabriel wrote:
>
> snd_pcm_suspend_all() walks all PCM substreams and uses a lockless
> runtime check to skip closed streams. It then calls snd_pcm_suspend()
> for each remaining substream and finally runs snd_pcm_sync_stop() in a
> second pass.
>
> The runtime lifetime is still controlled by pcm->open_mutex in the
> open/release path. That means a concurrent close can clear or free
> substream->runtime after the initial check in snd_pcm_suspend_all(),
> leaving the later suspend or sync-stop path to dereference a stale or
> NULL runtime pointer.
>
> Serialize snd_pcm_suspend_all() with pcm->open_mutex so the runtime
> pointer stays stable across both loops. This matches the existing PCM
> runtime lifetime rule already used by other core paths that access
> substream->runtime outside the stream lock.
>
> Suggested-by: Takashi Iwai <tiwai@xxxxxxxx>
> Signed-off-by: Cássio Gabriel <cassiogabrielcontato@xxxxxxxxx>
> ---
> Changes in v2:
> - Update funtion description (updates kerneldoc).
> - Link to v1: https://lore.kernel.org/r/20260320-alsa-pcm-suspend-open-close-lock-v1-1-b5992a120335@xxxxxxxxx
Applied to for-next branch now. Thanks.
Takashi