Skip to content

Commit f2a772c

Browse files
committed
iio: adc: ad7124: Fix potential overflow due to non sequential channel numbers
Channel numbering must start at 0 and then not have any holes, or it is possible to overflow the available storage. Note this bug was introduced as part of a fix to ensure we didn't rely on the ordering of child nodes. So we need to support arbitrary ordering but they all need to be there somewhere. Note I hit this when using qemu to test the rest of this series. Arguably this isn't the best fix, but it is probably the most minimal option for backporting etc. Alexandru's sign-off is here because he carried this patch in a larger set that Jonathan then applied. Fixes: d7857e4 ("iio: adc: ad7124: Fix DT channel configuration") Reviewed-by: Alexandru Ardelean <[email protected]> Signed-off-by: Jonathan Cameron <[email protected]> Signed-off-by: Alexandru Ardelean <[email protected]> Cc: <[email protected]>
1 parent 4573472 commit f2a772c

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

drivers/iio/adc/ad7124.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -771,6 +771,13 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev,
771771
if (ret)
772772
goto err;
773773

774+
if (channel >= indio_dev->num_channels) {
775+
dev_err(indio_dev->dev.parent,
776+
"Channel index >= number of channels\n");
777+
ret = -EINVAL;
778+
goto err;
779+
}
780+
774781
ret = of_property_read_u32_array(child, "diff-channels",
775782
ain, 2);
776783
if (ret)

0 commit comments

Comments
 (0)