HIGH Introduced in 2.6.28
us122l ReadMapping Bypass
CVE-2026-97931
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.8HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: ALSA: us122l: Prevent write upgrades for read mappings The hwdep mmap callback rejects read-buffer mappings that are initially writable, but leaves VM_MAYWRITE set on mappings created with PROT_READ. A process that can open the hwdep node O_RDWR can later use mprotect() to make the mapping writable. The read allocation begins with struct usb_stream. Its read_size member is used by the fault handler to decide which pages belong to the read buffer. The read VMA intentionally remains expandable because pcm_usb_stream uses mremap() after reading that size. Changing read_size first can therefore map and access pages beyond the allocation. The same member is also consumed by usb_stream_free(), where changing it can make free_pages_exact() release pages outside the allocation. Clear VM_MAYWRITE for read-buffer mappings after rejecting an initially writable VMA. This keeps the separate output-buffer mapping writable while preventing later permission upgrades.
02KernelScan AI Analysis
Risk summary
A local user with access to a US-122L USB audio device's hardware-dependent interface can bypass read-only mapping protections to corrupt kernel memory, potentially leading to arbitrary code execution or system crash. Exploitation requires the specific USB audio hardware to be connected and the hwdep device node to be accessible, typically through audio group membership. The corruption can cause out-of-bounds page access and release of unrelated kernel pages during teardown.
Vulnerability analysis
The ALSA US-122L driver's hardware-dependent mmap interface creates read-buffer mappings as read-only but fails to clear the kernel permission flag that allows later write upgrades. A local user who can open the audio device node can map the read buffer read-only, then use mprotect to make it writable, and modify the internal stream metadata that controls buffer sizing. Because the driver's page fault handler and cleanup routine both consume that size field without revalidation, corrupting it enables access to pages beyond the allocated buffer and can cause the teardown path to free unrelated kernel pages. The fix clears the write-permission flag on read-buffer mappings at creation time so they cannot be upgraded afterward, while leaving the separate output-buffer mapping writable. The vulnerable path requires a US-122L USB audio device to be connected and the corresponding hwdep device node to be accessible, typically by a local user in the audio group.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 5.10 | 2.6.28 | 5.10.271 | cbc1f954ce67 |
| 5.15 | 2.6.28 | 5.15.222 | becb89036a13 |
| 6.1 | 2.6.28 | 6.1.189 | 6a5f5a5a32c7 |
| 6.12 | 2.6.28 | 6.12.111 | 64a879502398 |
| 6.18 | 2.6.28 | 6.18.53 | d9c537b14f49 |
| 6.6 | 2.6.28 | 6.6.158 | 938e8d6cee8d |
| 7.2 | 2.6.28 | 7.2.7 | 0eb9dd4774af |
| mainline | 2.6.28 | 7.3 | 71c610aeb177 |
| cip/5.10 | 2.6.28 | 5.10.271-cip78 | cbc1f954ce67 |
| cip/6.1 | 2.6.28 | 6.1.189-cip61 | 6a5f5a5a32c7 |
| cip/6.1-rt | 2.6.28 | 6.1.189-cip61-rt32 | 6a5f5a5a32c7 |
| cip/6.12 | 2.6.28 | 6.12.111-cip32 | 64a879502398 |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.111-cip32 |
| cip/6.1 | Fixed in 6.1.189-cip61 |
| cip/6.1-rt | Fixed in 6.1.189-cip61-rt32 |
| cip/5.10 | Fixed in 5.10.271-cip78 |
| cip/5.10-rt | Affected — no CIP fix yet (latest 5.10.268-cip77-rt34) |
| cip/4.19 | Affected — no CIP fix yet (latest 4.19.325-cip136) |
| cip/4.19-rt | Affected — no CIP fix yet (latest 4.19.325-cip136-rt50) |
| cip/4.4 | Affected — no CIP fix yet (latest 4.4.302-cip115) |
| cip/4.4-rt | Affected — no CIP fix yet (latest 4.4.302-cip115-rt63) |