sound/core/pcm_native.c | 4 ++++ 1 file changed, 4 insertions(+)
syzbot reported a slab-use-after-free in snd_pcm_post_stop() when the
PCM runtime may already be freed during teardown.
snd_pcm_post_stop() can be called after snd_pcm_detach_substream()
releases the runtime, leading to a use-after-free when accessing
runtime state and wait queues.
Add a defensive check to avoid dereferencing a freed runtime pointer.
Reported-by: syzbot+16b2b67ae905feb8a289@syzkaller.appspotmail.com
Signed-off-by: Soham Kute <officialsohamkute@gmail.com>
---
sound/core/pcm_native.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index 932a9bf98..7b9e2aea5 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -1542,6 +1542,10 @@ static void snd_pcm_post_stop(struct snd_pcm_substream *substream,
snd_pcm_state_t state)
{
struct snd_pcm_runtime *runtime = substream->runtime;
+
+ if (!runtime)
+ return;
+
if (runtime->state != state) {
snd_pcm_trigger_tstamp(substream);
__snd_pcm_set_state(runtime, state);
--
2.34.1
On Sun, 08 Feb 2026 11:20:58 +0100, Soham Kute wrote: > > syzbot reported a slab-use-after-free in snd_pcm_post_stop() when the > PCM runtime may already be freed during teardown. > > snd_pcm_post_stop() can be called after snd_pcm_detach_substream() > releases the runtime, leading to a use-after-free when accessing > runtime state and wait queues. > > Add a defensive check to avoid dereferencing a freed runtime pointer. > > Reported-by: syzbot+16b2b67ae905feb8a289@syzkaller.appspotmail.com > > Signed-off-by: Soham Kute <officialsohamkute@gmail.com> Thanks for the patch, but IMO it's rather a wrong "fix". It just papers over some place that had casually a NULL dereference due to a UAF. That is, this change itself is no fix for UAF, but just trying to avoid a casual Oops; more worse, it may still happen at another place if happening at a little bit different moment even if you plug like that. If any, we could put such a sanity check with WARN_ON() to indicate the obvious code flow error. But, still there is no much reason to put the check only here at this place. After all, the actual UAF must be fixed in the caller side. thanks, Takashi
© 2016 - 2026 Red Hat, Inc.