CVE-2026-98116

ALSA: pcm: Serialize PCM mmap with buffer reallocation to fix page UAF

HIGH
7.8
CVSS Score
Published: September 25, 2026 at 10:36 AM UTC
Updated: October 28, 2026 at 04:10 PM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH7.8
Exploit prediction
EPSS 0.1%

Description

In the Linux kernel, the following vulnerability has been resolved: ALSA: pcm: Serialize PCM mmap with buffer reallocation to fix page UAF snd_pcm_hw_params() and snd_pcm_hw_free() guard buffer reallocation with an mmap_count check performed under the PCM stream lock, but the lock is released long before the buffer is actually freed: snd_pcm_sync_stop(), constraint refinement and do_free_pages() all happen in between. snd_pcm_mmap_data(), on the other hand, takes no lock at all: it validates against the old buffer's state and dma_bytes, remaps its pages into the VMA, and only then increments mmap_count. A concurrent mmap() can therefore slip in between the check and the free. remap_pfn_range() installs writable PTEs for the old buffer's pages without taking page references, and the subsequent do_free_pages() returns those pages to the page allocator while the VMA still maps them. This leaves a stale, writable mapping of freed pages: a page-level use-after-free that can be leveraged for local privilege escalation. Make snd_pcm_mmap_data() participate in the buffer-access scheme introduced for hw_params/hw_free: acquire runtime->buffer_accessing before validating and remapping, and release it afterwards. Buffer reallocation already fails with -EBUSY while accessors are active, and the mmap side now fails with -EBUSY while a reallocation is in progress, so the validate/remap sequence and the check/free sequence can no longer interleave. A reproducer that turns this race into a stale writable mapping of the freed DMA buffer pages is available on request.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

4.14.279 ≤ v < 4.154.19.243 ≤ v < 4.205.10.109 ≤ v < 5.115.15.32 ≤ v < 5.15.2225.16.18 ≤ v ≤ 5.17.15.4.193 ≤ v < 5.56.13 ≤ v < 6.18.536.19 ≤ v < 7.2.76.7 ≤ v < 6.12.1110f6947f5f5208f6ebd4d76a82a4757e2839a23f81bbf82d9f961414d6c76a08f7f843ea068e0ab7b33061d0fba51d2bf70a2ef9645f703c33fe8e4384.14.2794.19.2435.10.1095.15.325.16.185.17.15.185.4.1937.390c13cbbdffd7da79ac56f80373a9a1be0bf892ee3c60ec9fe64404dc035e7c41277d74aa26cb9cb6c40a6ebe4a0cfc9d6a181958211682cffea9a42aa926843acca96c0dfbde2e835b8137f2f092fbeb492694ce0441053de57699e1e2b7bc148a69
Vendor states this is fixed in 8c1882dfee8f404d118020664b73eb4592172226 (fixed)
Vendor states this is fixed in 9857a75714bb5df4781e4d8b1a1753b1e17bf07a (fixed)
Vendor states this is fixed in 9b110a9dcecc59516c77cb3c0caf1f492f75df2d (fixed)
Vendor states this is fixed in cbadf2575d25e7dcc0d4da2717817ae569fbc99b (fixed)
Vendor states this is fixed in cbc7ec97601d09b74e05e44470fa6b0bcdabf3f5 (fixed)
Vendor states this is fixed in e6cdd2a0470d64073349a970dc1691433804b271 (fixed)
Vendor states this is fixed in fd137bf8149bc6460f9b7b1fc292025da04cb9ee (fixed)
Affected range stops below 4.15, so it looks safe — our inference, not a vendor statement
Affected range stops below 4.20, so it looks safe — our inference, not a vendor statement
Affected range stops below 5.11, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 5.15.222 (unaffected)
Affected range stops below 5.17, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 5.18 (unaffected)
Affected range stops below 5.5, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 6.1.189 (unaffected)
Vendor states this is fixed in 6.12.111 (unaffected)
Vendor states this is fixed in 6.18.53 (unaffected)
Vendor states this is fixed in 6.6.158 (unaffected)
Vendor states this is fixed in 7.2.7 (unaffected)
Vendor states this is fixed in 7.3 (unaffected)
Vendor states this is fixed in 7.3-rc2 (unaffected)

CVSS

7.8HIGHLinux
Vector?

Quick Info

StatusANALYZED
CWE
CWE-416

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card