mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
iio: adc: xilinx-ams: fix out-of-bounds channel lookup in event handling
ams_event_to_channel() may return a pointer past the end of
dev->channels when no matching scan_index is found. This can lead
to invalid memory access in ams_handle_event().
Add a bounds check in ams_event_to_channel() and return NULL when
no channel is found. Also guard the caller to safely handle this
case.
Fixes: d5c70627a7 ("iio: adc: Add Xilinx AMS driver")
Signed-off-by: Guilherme Ivo Bozi <guilherme.bozi@usp.br>
Reviewed-by: Salih Erim <salih.erim@amd.com>
Tested-by: Salih Erim <salih.erim@amd.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
8402b32661
commit
947eb6f0a2
|
|
@ -871,6 +871,9 @@ static const struct iio_chan_spec *ams_event_to_channel(struct iio_dev *dev,
|
|||
if (dev->channels[i].scan_index == scan_index)
|
||||
break;
|
||||
|
||||
if (i == dev->num_channels)
|
||||
return NULL;
|
||||
|
||||
return &dev->channels[i];
|
||||
}
|
||||
|
||||
|
|
@ -1012,6 +1015,8 @@ static void ams_handle_event(struct iio_dev *indio_dev, u32 event)
|
|||
const struct iio_chan_spec *chan;
|
||||
|
||||
chan = ams_event_to_channel(indio_dev, event);
|
||||
if (!chan)
|
||||
return;
|
||||
|
||||
if (chan->type == IIO_TEMP) {
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user