CVE-2026-89619: HID: intel-thc-hid: intel-quickspi: bound GET_REPORT response to the caller buffer
In the Linux kernel, the following vulnerability has been resolved:
HID: intel-thc-hid: intel-quickspi: bound GETREPORT response to the caller buffer
quickspihidrawrequest() receives the caller's buffer length in len, but quickspigetreport() never sees it and copies the whole device-supplied response into buf regardless:
memcpy(buf, qsdev->reportbuf, qsdev->reportlen);
qsdev->reportlen comes from the input report the touch controller returns, while buf is sized to whatever the caller asked hidraw for through HIDIOCGFEATURE or HIDIOCGINPUT. A response larger than that overflows buf with device-controlled content.
The intel-quicki2c sibling already passes the caller length down to quicki2cgetreport() and validates the response against it before the copy. Do the same here.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
intel-thc-hid: intel-quickspito a version that resolves this vulnerability.Patch intel-thc-hid: intel-quickspi: bound GET_REPORT response to the caller buffer
Event History
Frequently Asked Questions
What conditions are required to trigger the overflow?
A caller must issue a hidraw feature or input report request using HIDIOCGFEATURE or HIDIOCGINPUT with a buffer smaller than the response returned by the touch controller. The controller-provided response length controls how much data is copied.
Who is exposed to this issue?
Systems using the Linux kernel's intel-quickspi HID driver are exposed when they communicate with the affected touch controller through hidraw report requests. The issue is specific to the intel-quickspi path described; the intel-quicki2c sibling already validates the response against the caller buffer length.
How can I determine whether a system has the fix?
Check whether the installed kernel includes one of the referenced stable commits. The corrected implementation passes the caller-provided length to the GET_REPORT handling path and rejects or bounds responses that exceed that length.