CVE-2026-80575: Input: cs40l50-vibra - validate custom data from user space

Published Aug 26, 2026
·
Updated

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

1 affected component
Linux Kernel

Event History

Aug 26, 2026
CVE Published
via MITRE·02:37 PM
Data Sourced
via MITRE·02:37 PM
Description
Data Sourced
via NVD·03:17 PM
Description

Frequently Asked Questions

1

Who is exposed to this issue?

Systems using the Linux kernel cs40l50-vibra input driver are exposed when user space can submit FF_PERIODIC effects with FF_CUSTOM data through EVIOCSFF. The affected data originates from the user-supplied ff_effect structure.

2

What inputs trigger the unsafe accesses?

A custom_len of 0 can cause the driver to dereference custom_data[0] from a zero-size allocation. A custom_len of 1 can cause the driver to read custom_data[1] one s16 word past the two-byte allocation for ROM or RAM banks.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203