mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
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>
This commit is contained in:
parent
eb60a24b35
commit
ae696dfa47
|
|
@ -346,6 +346,7 @@ static void nxp_sar_adc_isr_buffer(struct iio_dev *indio_dev)
|
|||
ret = nxp_sar_adc_read_data(info, info->buffered_chan[i]);
|
||||
if (ret < 0) {
|
||||
nxp_sar_adc_read_notify(info);
|
||||
iio_trigger_notify_done(indio_dev->trig);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user