diff options
| author | Cássio Gabriel <cassiogabrielcontato@gmail.com> | 2026-03-27 10:59:45 -0300 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2026-03-27 15:12:28 +0100 |
| commit | 1a56641b7ae4f19216774a59d68024be3e6197d0 (patch) | |
| tree | 45af1e89efe27a9d252e5b2cd4ba67d5d3cab881 /tools/perf/scripts/python | |
| parent | bbc6c0dda54fc0ad8f8aed0b796c23e186e1a188 (diff) | |
ALSA: pcm: Serialize snd_pcm_suspend_all() with open_mutex
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@suse.com>
Signed-off-by: Cássio Gabriel <cassiogabrielcontato@gmail.com>
Link: https://patch.msgid.link/20260327-alsa-pcm-suspend-open-close-lock-v2-1-cc4baca4dcd6@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions
