CVE-2026-80827

Source
https://cve.org/CVERecord?id=CVE-2026-80827
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80827.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-80827
Downstream
Published
2026-09-04T15:54:31.111Z
Modified
2026-09-06T03:46:48.584741662Z
Summary
USB: serial: option: fix slab OOB read in interrupt URB callback
Details

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

USB: serial: option: fix slab OOB read in interrupt URB callback

The interrupt URB buffer is allocated in setupportinterrupt_in() based on the endpoint's wMaxPacketSize:

buffer_size = usb_endpoint_maxp(epd);
port->interrupt_in_buffer = kmalloc(buffer_size, GFP_KERNEL);

When a USB device declares wMaxPacketSize = 8 on its interrupt IN endpoint, the buffer is allocated from kmalloc-8 cache (exactly 8 bytes).

If the device sends a short packet (actual_length < wMaxPacketSize), the URB completes with status == 0 and the callback proceeds to read:

data[sizeof(struct usb_ctrlrequest)]

which evaluates to data[8], accessing 1 byte beyond the allocated 8-byte buffer. This results in a slab out-of-bounds read.

Fix this by adding the missing bounds check: first verify that the actual length is large enough to contain the struct usbctrlrequest header before accessing reqpkt->bRequestType and reqpkt->bRequest, and then verify that there is an additional byte for the modem signal state before reading data[sizeof(struct usbctrlrequest)] inside the conditional. Use sizeof(*reqpkt) instead of sizeof(struct usbctrlrequest) for consistency.

[ johan: use dev_err(); split signals declaration and initialisation ]

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/80xxx/CVE-2026-80827.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
58cfe9113e485f7e04bd0eac4fc4251b330af501
Fixed
fbe60fd2abc8a5561f39719a41ad9a01b5d8e567
Fixed
94e5525697b9e91ddc4071129874120a50a4f342
Fixed
6b8cf5422c7e96ed5b22a8368eff663f3f98b8ec
Fixed
030e3a73d3c3aa67c44454649e984d6383cdb7d3
Fixed
060db7d48af1e650643c8b8319111a9ea2ce4486
Fixed
2ef5560387f2c0713cee975be2b24b281bd90f3e
Fixed
a72a13c83a652516a0e469d275b81d29a7429049
Fixed
d762aef4eba354066be21a5d88eb2066e282f4c9
Fixed
885d802f544ca7bfa8f3984d94233cce715bb6b3

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80827.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
2.6.12
Fixed
5.10.269
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.220
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.187
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.156
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.108
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.49
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.1.13
Type
ECOSYSTEM
Events
Introduced
7.2.0
Fixed
7.2.3

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80827.json"