CVE-2026-80569: Input: synaptics-rmi4 - bound the F54 report size to the allocated buffer
In the Linux kernel, the following vulnerability has been resolved:
Input: synaptics-rmi4 - bound the F54 report size to the allocated buffer
rmif54work() reads a diagnostics report from the device into f54->reportdata, sizing the transfer with rmif54getreportsize():
reportsize = rmif54getreportsize(f54); ... for (i = 0; i < reportsize; i += F54REPORTDATASIZE) { int size = min(F54REPORTDATASIZE, reportsize - i); ... rmireadblock(.., f54->reportdata + i, size); }
reportdata is allocated once at probe from F54's own electrode counts (array3size(f54->numtxelectrodes, f54->numrxelectrodes, sizeof(u16))), but rmif54getreportsize() computes the size from drvdata->numelectrodes when those are set, i.e. from the F55 function's electrode counts. Both counts come straight from device queries (F54 and F55 each report up to 255 electrodes) and nothing constrains the F55 counts to the F54 ones.
A malicious or malfunctioning RMI4 device that reports larger F55 electrode counts than its F54 counts makes reportsize exceed the allocation, so the read loop writes past reportdata (and the V4L2 dequeue memcpy() then reads past it). On conforming hardware the F55 configured electrodes are a subset of the F54 physical electrodes, so reportsize never exceeds the buffer and well-behaved devices are unaffected.
Record the allocation size and reject a report that does not fit, mirroring the existing zero-size check.
Affected Software
Event History
Frequently Asked Questions
Which systems are exposed to this issue?
Systems using the Linux kernel Synaptics RMI4 input driver with an attached RMI4 device are exposed if the device reports F55 electrode counts larger than its F54 electrode counts. The issue can be triggered by a malicious or malfunctioning device.
What does an attacker need to exploit it?
An attacker needs control of, or the ability to present, an RMI4 device that supplies inconsistent device-query data. Specifically, the device must report larger F55 electrode counts than the F54 counts used to allocate the diagnostics buffer.
What is the impact of the inconsistent electrode counts?
The driver can calculate a diagnostics report size larger than the allocated report_data buffer, causing device data to be written past that buffer. A subsequent V4L2 dequeue memcpy can also read past the buffer.
Are normal conforming devices affected?
The available information states that conforming hardware does not present the mismatch between F55 and F54 electrode counts needed to exceed the allocation. The vulnerable condition depends on inconsistent counts reported by the device.