Description
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.
Published: 2026-08-28
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability is a use‑after‑free in the ALSA PCM unlink path. When a linked stream is drained, an on‑stack wait entry is attached to the peer's sleep structure and later removed only if that peer remains in the same group. If the group membership changes before the wait ends, the entry can remain on a freed stack frame and a subsequent wake‑up will walk this stale reference, potentially causing a kernel crash or an opportunity for arbitrary code execution. The flaw is classified as CWE‑416 and can grant a local attacker kernel‑level privilege escalation if successfully triggered.

Affected Systems

It affects the Linux kernel across all releases that contain the ALSA PCM unlink code until the fix is applied. Vendors identified are the Linux kernel maintainer, and all distributions using the stock kernel are potentially impacted. The vulnerability is present in the mainline kernel source and any derivative that has not been patched to include the commit that removes the conditional wait removal.

Risk and Exploitability

The exact CVSS score is not listed, and EPSS data is unavailable, but the nature of the bug – a use‑after‑free in kernel code – typically places it in high to critical severity. There is no known public exploit and the vulnerability is not listed in CISA KEV, so the likelihood of immediate exploitation is uncertain. Nonetheless, because the flaw can be reached by unlinking a stream that is draining or draining, any system that performs such operations is at risk until the kernel is updated. Recommend evaluating current kernel versions for the presence of the specific commit identifiers referenced in the advisory and applying an update as soon as possible.

Generated by OpenCVE AI on August 28, 2026 at 12:51 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the Linux kernel to a version that includes the ALSA PCM unlink fix.
  • If a vendor package update is not available, rebuild the kernel from source with the patch applied using the provided commit or merge the upstream commit before rebooting.
  • Reboot the system to activate the patched kernel and clear any pending unlink operations.

Generated by OpenCVE AI on August 28, 2026 at 12:51 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 28 Aug 2026 13:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Fri, 28 Aug 2026 11:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Fri, 28 Aug 2026 07:30:00 +0000

Type Values Removed Values Added
Description 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.
Title ALSA: pcm: wake linked drain waiters on unlink
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-28T06:53:14.286Z

Reserved: 2026-08-26T14:34:25.788Z

Link: CVE-2026-80716

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-28T08:16:57.303

Modified: 2026-08-28T08:16:57.303

Link: CVE-2026-80716

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-28T13:00:04Z

Weaknesses

No weakness.