CVE-2026-64502: iio: adc: ad_sigma_delta: fix clear_pending_event for registerless devices
In the Linux kernel, the following vulnerability has been resolved:
iio: adc: adsigmadelta: fix clearpendingevent for registerless devices
adsigmadeltaclearpendingevent() falls through to the status register read path for devices with hasregisters = false and no rdygpiod. For such devices, adsdreadreg() skips the address byte entirely and clocks raw MISO bytes with no address phase — making it byte-for-byte identical to reading conversion data. If a pending conversion result is present, this partially consumes it and corrupts the data stream for the subsequent adsdreadreg() call in adsigmadeltasingleconversion().
Furthermore, with numresetclks = 0 on these devices, datareadlen evaluates to 0. If the clocked byte has bit 7 clear, pendingevent is set and the code attempts memset(data + 2, 0xff, 0 - 1), overflowing to SIZEMAX and corrupting the heap.
Fix by returning 0 immediately when neither rdygpiod nor hasregisters is set. This is safe for all current registerless devices: ad7191 and ad7780 (with powerdown GPIO) are reset between conversions by CS deassertion, so there is no stale result to drain; ad7780 (without powerdown GPIO) and max11205 are continuously-converting and cycle ~DRDY at the output data rate regardless of whether the previous result was read, so the next falling edge fires naturally.
A future registerless device that holds ~DRDY asserted until data is read would be broken by this early return and would require either numresetclks set or a rdy-gpio.
The same heap corruption is reachable on any device with rdygpiod set but numresetclks = 0: if the GPIO indicates a pending event, the drain path executes memset(data + 2, 0xff, 0 - 1) regardless of hasregisters. Add an explicit datareadlen == 0 guard after the pending event check; the stale result is then consumed by the first adsdreadreg() call in adsigmadeltasingleconversion().
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2026-64502?
The severity of CVE-2026-64502 is high with a CVSS score of 7.8.
What does CVE-2026-64502 affect?
CVE-2026-64502 affects the Linux kernel, specifically the iio: adc: ad_sigma_delta module.
How do I fix CVE-2026-64502?
To fix CVE-2026-64502, upgrade to a patched version of the Linux kernel where the vulnerability has been resolved.
What is the impact of CVE-2026-64502?
CVE-2026-64502 can lead to improper handling of pending events in registerless devices, which may compromise device functionality.
When was CVE-2026-64502 published?
CVE-2026-64502 was published on July 25, 2026.