]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
iio: adc: nxp-sar-adc: harden buffer ISR against per-channel read failure
authorStepan Ionichev <sozdayvek@gmail.com>
Mon, 18 May 2026 18:11:38 +0000 (23:11 +0500)
committerJonathan Cameron <jic23@kernel.org>
Wed, 3 Jun 2026 17:29:09 +0000 (18:29 +0100)
commitae696dfa47c30016cd429b9db5e70b259b8f509e
tree67ef4099032cbe5cb92368e432646be470f0835e
parenteb60a24b35bfb9e85a272e561379833e49a12a79
iio: adc: nxp-sar-adc: harden buffer ISR against per-channel read failure

nxp_sar_adc_isr_buffer() bails on the first channel-read failure
without calling iio_trigger_notify_done(), so the trigger use_count
is left incremented and iio_trigger_poll_chained() drops subsequent
dispatches until the device is rebound.

Reaching this path means a state machine has gone wrong (driver bug
or the SAR ADC in an unexpected state) rather than a transient bus
issue, so this is hardening rather than a bug fix. If the underlying
condition persists the device is wedged and needs an unbind anyway.

Call iio_trigger_notify_done() on the error exit too, matching the
success path. The nxp_sar_adc_read_notify() duplication is intentional
and avoids a goto label for a two-line bail-out, as suggested by David.

Signed-off-by: Stepan Ionichev <sozdayvek@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/adc/nxp-sar-adc.c