PT-2026-90344 · Linux · Linux

CVE-2026-89628

·

Published

2026-09-11

·

Updated

2026-09-11

None

No severity ratings or metrics are available. When they are, we'll update the corresponding info on the page.
In the Linux kernel, the following vulnerability has been resolved:
HID: picolcd: clamp eeprom debugfs read to bytes actually received
picolcd debug eeprom read() trusts resp->raw data[2] -- a length byte supplied by the device in its REPORT EE DATA reply -- clamped only to the caller's read() count:
ret = resp->raw data[2];
if (ret > s)
	ret = s;
if (copy to user(u, resp->raw data+3, ret))
It never checks resp->raw size, the number of bytes picolcd raw event() actually copied into the 64-byte raw data[] of the kmalloc'd struct picolcd pending. A device (or a spoofed picoLCD) returning a length byte of 0xff, read with a count >= 255, makes copy to user() read past raw data[] into adjacent slab memory and return it to userspace through the debugfs "eeprom" file:
BUG: KASAN: slab-out-of-bounds in copy to user
Read of size 255 ... picolcd debug eeprom read+0x214/0x2f0 [hid picolcd]
The debug-dump path in the same file already validates the device length byte against the received size before trusting it; this read does not. The file is created S IRUSR (root-only) and a crafted device is needed, so it is neither unprivileged- nor remotely-triggerable.
Clamp the copy length to resp->raw size - 3 (the payload actually received, minus the 3-byte header), floored at 0 for short replies.
Found an issue in the description? Have something to add? Feel free to write us 👾

Related Identifiers

CVE-2026-89628

Affected Products

Linux