CVE-2026-64449: staging: vme_user: bound slave read/write to the kern_buf size

Published Jul 25, 2026
·
Updated

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

staging: vmeuser: bound slave read/write to the kernbuf size

The SLAVE-path helpers buffertouser() and bufferfromuser() copy 'count' bytes into/out of the fixed-size kernbuf (sizebuf == PCIBUFSIZE == 0x20000, 128 KiB) using ppos as the offset, without bounding ppos + count against sizebuf.

vmeuserwrite()/vmeuserread() only clamp count to the VME window size (imagesize = vmegetsize(resource)), which VMESETSLAVE sets from the user-supplied slave.size -- validated against the VME address space (up to VMEA32MAX = 4 GiB), not against PCIBUFSIZE. When the window exceeds 128 KiB, a write()/read() copies past the kernbuf allocation.

Clamp count against sizebuf in both helpers, with an early return when ppos is already at/after the buffer end. ppos is >= 0 here (the caller rejects negative offsets), so sizebuf - ppos cannot wrap. This mirrors the existing clamp in the MASTER-path helpers resourcetouser() / resourcefromuser(), and matches the read()/write() convention of a short transfer at end-of-buffer.

Found by static analysis (CodeQL taint tracking + CBMC bounded model checking) and confirmed dynamically under KASAN with the vmefake bridge:

BUG: KASAN: slab-out-of-bounds in copyfromuser+0x2d/0x80 Write of size 262144 at addr ffff888004100000 by task trigger/68 copyfromuser+0x2d/0x80 vmeuserwrite+0x13e/0x240 [vmeuser] vfswrite+0x1b8/0x7a0 ksyswrite+0xb8/0x150

Affected Software

8 affected components
Linux Linux kernel
Linux Linux kernel>=2.6.32<6.1.178
Linux Linux kernel>=6.2<6.6.145
Linux Linux kernel>=6.7<6.12.96
Linux Linux kernel>=6.13<6.18.39
Linux Linux kernel>=6.19<7.1.4
Linux Linux kernel=7.2-rc1
Linux Linux kernel=7.2-rc2

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    In the SLAVE-path helpers buffer_to_user() and buffer_from_user(), clamp the user copy length by bounding (*ppos + count) against size_buf (PCI_BUF_SIZE). Add an early return when the transfer would exceed the kern_buf allocation (128 KiB / 0x20000). Ensure the slave helpers cannot copy past kern_buf when *ppos is at/after the buffer end.

    Linux kernel VME staging driver (vme_user / vme_user_read-vme_user_write, slave path helpers buffer_to_user() and buffer_from_user()) Clamp bounds for slave path user copy (bound *ppos + count against size_buf == PCI_BUF_SIZE) with early return on overflow/end-of-buffer = Implemented: bound *ppos + count against size_buf (PCI_BUF_SIZE == 0x20000) and add early return when the requested transfer exceeds the buffer; also reject negative offsets via existing checks

Event History

Jul 25, 2026
CVE Published
via MITRE·08:51 AM
Data Sourced
via MITRE·08:51 AM
DescriptionSeverity
Data Sourced
via NVD·10:17 AM
RemedyDescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What access does an attacker need to exploit this issue?

An attacker needs local access and low privileges, as indicated by the CVSS vector. Exploitation requires access to the VME user interface and the ability to configure a slave window larger than the fixed 128 KiB kernel buffer.

2

Which systems are exposed?

Systems using the Linux kernel staging vme_user driver are exposed when the SLAVE-path read or write interface is used with a VME slave window exceeding 128 KiB. The affected condition depends on the configured slave window size, not merely the presence of the driver.

3

What happens when the vulnerable path is reached?

A read or write can copy beyond the fixed-size kern_buf allocation because the transfer is limited by the VME window size rather than the 128 KiB buffer size. This can affect confidentiality, integrity, and availability.

4

How can exposure be reduced before applying the fix?

Avoid using SLAVE-path reads or writes with VME slave windows larger than 128 KiB. Restrict local access to accounts and processes that can access and configure the VME user interface.

5

How does the fix change behavior at the buffer boundary?

The fix limits transfers to the remaining space in kern_buf and returns early if the file offset is already at or beyond the 128 KiB buffer end. Reads and writes may therefore complete as short transfers at the end of the buffer.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203