---
id: CVE-2026-80716
title: 'ALSA: pcm: wake linked drain waiters on unlink'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  ALSA: pcm: wake linked drain waiters on unlink

  snd_pcm_drain() on a linked stream parks an on-stack wait entry on the
  drained peer's runtime->sleep, and after schedule…
severity: high
cvss: 7.8
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'
cvssSource: cna
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 <
    c172e4c53321ee6429955295ea133bc3597a3ca9
  - >-
    Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 <
    3035bb784cea3f338934f5042dd3f35225a51b2e
  - >-
    Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 <
    1c1b7e8e545ce65e40f65b55c432765e058ea98f
  - >-
    Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 <
    e8b784a3f4fba3ea9c4d05138ecfa784a069627f
  - >-
    Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 <
    e8315330e4ec09c0cac625515400e13d0ee22b81
  - >-
    Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 <
    2940cc3cf43c72126b74ee6376314c195382023a
  - >-
    Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 <
    db09bc4ab19ce548a078240d2374792523953500
  - >-
    Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 <
    f495b6c4c8594122918552c9be2b51eb71647cd9
  - Linux 5.1
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: total
  timestamp: '2026-10-16T19:20:45.758887Z'
published: '2026-08-28'
updated: '2026-10-16'
sourceUpdated: '2026-10-16T19:26:34.951Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-80716'
references:
  - url: 'https://git.kernel.org/stable/c/c172e4c53321ee6429955295ea133bc3597a3ca9'
  - url: 'https://git.kernel.org/stable/c/3035bb784cea3f338934f5042dd3f35225a51b2e'
  - url: 'https://git.kernel.org/stable/c/1c1b7e8e545ce65e40f65b55c432765e058ea98f'
  - url: 'https://git.kernel.org/stable/c/e8b784a3f4fba3ea9c4d05138ecfa784a069627f'
  - url: 'https://git.kernel.org/stable/c/e8315330e4ec09c0cac625515400e13d0ee22b81'
  - url: 'https://git.kernel.org/stable/c/2940cc3cf43c72126b74ee6376314c195382023a'
  - url: 'https://git.kernel.org/stable/c/db09bc4ab19ce548a078240d2374792523953500'
  - url: 'https://git.kernel.org/stable/c/f495b6c4c8594122918552c9be2b51eb71647cd9'
tags:
  - cve.org
epss: 0.00123
epssPercentile: 0.01863
ingestedAt: '2026-10-16T19:46:24.303Z'
---

## Overview

In the Linux kernel, the following vulnerability has been resolved:

ALSA: pcm: wake linked drain waiters on unlink

snd_pcm_drain() on a linked stream parks an on-stack wait entry on the
drained peer's runtime->sleep, and after schedule_timeout() removes it
only if that peer is still found in the caller's group.  If group
membership changes during the wait and the sleep ends by signal or
timeout (so autoremove_wake_function() does not run), finish_wait() is
skipped and snd_pcm_drain() returns with the entry still queued on that
stream's sleep list; a later wake_up() then walks a freed stack frame.
This is reachable by unlinking either the drained or the draining stream.

Unlike the close path (snd_pcm_drop() -> snd_pcm_post_stop()),
snd_pcm_unlink() never wakes the sleep queues.  Wake every group member
under the group lock before the membership change, so a linked drainer is
released and drops its entry while the streams are still grouped.

The window was opened when snd_pcm_link_rwsem stopped being held across
the wait and the removal became conditional on group membership (see
Fixes). The later switch to finish_wait() kept that conditional removal,
so the signal/timeout case remained.

## Affected

- `Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 < c172e4c53321ee6429955295ea133bc3597a3ca9`
- `Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 < 3035bb784cea3f338934f5042dd3f35225a51b2e`
- `Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 < 1c1b7e8e545ce65e40f65b55c432765e058ea98f`
- `Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 < e8b784a3f4fba3ea9c4d05138ecfa784a069627f`
- `Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 < e8315330e4ec09c0cac625515400e13d0ee22b81`
- `Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 < 2940cc3cf43c72126b74ee6376314c195382023a`
- `Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 < db09bc4ab19ce548a078240d2374792523953500`
- `Linux >= f57f3df03a8e6010e321fa0258d3e054713c3cb7 < f495b6c4c8594122918552c9be2b51eb71647cd9`
- `Linux 5.1`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
