CVE-2026-80780: HID: pidff: fix OOB write when hid->inputs is empty
HID: pidff: fix OOB write when hid->inputs is empty
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
debian/linuxto a version that resolves this vulnerability.Fixed in 6.1.176-1Fixed in 6.1.190-1Fixed in 6.12.115-2Fixed in 7.2.12-1Fixed in 7.2.15-1 - Upgrade
Upgrade
debian/linux-6.12to a version that resolves this vulnerability.Fixed in 6.12.113-1~deb12u1 - Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1 - Compensating control
In hid_pidff_init_with_quirks(), check whether hid->inputs is empty before deriving the input device with list_entry(); return -ENODEV when the list is empty, and propagate the error through universal_pidff_probe() so initialization unwinds.
Event History
Frequently Asked Questions
Which initialization path can reach the vulnerable condition?
The vulnerable path is universal_pidff_probe(), which calls hid_pidff_init_with_quirks() directly for a descriptor carrying a PID usage page. The earlier usbhid caller runs under HID_CLAIMED_INPUT, which ensures at least one hid_input is present.
What device characteristics are needed to trigger the out-of-bounds write?
The HID device must have a report descriptor carrying a PID usage page while hid->inputs is empty. universal_pidff_probe() starts the device with HID_CONNECT_DEFAULT with force-feedback connection disabled, then invokes PID force-feedback initialization directly.
What is the resulting memory corruption?
An empty input list causes the code to treat the hid_device list head as a hid_input, producing a type-confused dev pointer. Force-feedback setup then writes FF capability bits out of bounds and input_ff_create() performs additional writes including a heap pointer and two function pointers.