UBUNTU-CVE-2026-80575: High severity ubuntu/linux-hwe-edge vulnerability
In the Linux kernel, the following vulnerability has been resolved: Input: cs40l50-vibra - validate custom data from user space cs40l50add() copies the custom data of an FFPERIODIC/FFCUSTOM effect straight from the ffeffect the user passed to EVIOCSFF, without requiring it to hold anything: workdata.customdata = memduparrayuser(periodic->customdata, periodic->customlen, sizeof(s16)); workdata.customlen = periodic->customlen; The driver then reads two words out of that buffer: customdata[0] as the waveform bank in cs40l50effectbankset(), and customdata[1] as the index within the bank in cs40l50effectindexset(). Neither read is covered by a length check, and customlen is fully user controlled: - customlen == 0 makes memduparrayuser() call memdupuser() with a length of zero, which returns ZEROSIZEPTR rather than an error, so customdata[0] dereferences it. - customlen == 1 allocates two bytes. A bank of ROM or RAM keeps effect->type out of the OWT case, and customdata[1] is then read one word past the allocation. The bank value itself is also mishandled. It is masked with CS40L50CUSTOMDATAMASK (0xffff) but stored in an s16, so a customdata[0] of 0x8000 or above wraps to a negative value that passes the "banktype >= CS40L50WVFRMBANKNUM" test. cs40l50effectindexset() indexes vib->dsp.banks[] with it before the switch statement's default case gets a chance to reject it: baseindex = vib->dsp.banks[effect->type].baseindex; maxindex = vib->dsp.banks[effect->type].maxindex; Require the two words the driver reads to be present, and hold the masked bank in a u32 so the existing upper-bound test covers the whole range. The da7280 haptic driver already range checks customlen this way.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- 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 the Linux kernel cs40l50-vibra driver, require custom_len to provide both custom_data[0] and custom_data[1] before reading them; store the masked bank value in a u32 so the existing upper-bound check covers the full range, and validate the index before using it to access vib->dsp.banks[].