summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYoung Xiao <92siuyang@gmail.com>2019-06-04 20:40:00 +0800
committerJonathan Cameron <Jonathan.Cameron@huawei.com>2019-06-17 21:06:44 +0100
commit936d3e536dcf88ce80d27bdb637009b13dba6d8c (patch)
treef3e06168c730b3754c3b2e0085cb0b951f7bf14c
parentcf344bd67e569b02a6d323a43405ad425396d6ea (diff)
downloadlinux-936d3e536dcf88ce80d27bdb637009b13dba6d8c.tar.bz2
iio:core: Fix bug in length of event info_mask and catch unhandled bits set in masks.
The incorrect limit for the for_each_set_bit loop was noticed whilst fixing this other case. Note that as we only have 3 possible entries a the moment and the value was set to 4, the bug would not have any effect currently. It will bite fairly soon though, so best fix it now. See commit ef4b4856593f ("iio:core: Fix bug in length of event info_mask and catch unhandled bits set in masks.") for details. Signed-off-by: Young Xiao <92siuyang@gmail.com> Reviewed-by: Alexandru Ardelean <alexandru.ardelean@analog.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
-rw-r--r--drivers/iio/industrialio-core.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index f5a4581302f4..dd8873a752dd 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -1107,6 +1107,8 @@ static int iio_device_add_info_mask_type_avail(struct iio_dev *indio_dev,
char *avail_postfix;
for_each_set_bit(i, infomask, sizeof(*infomask) * 8) {
+ if (i >= ARRAY_SIZE(iio_chan_info_postfix))
+ return -EINVAL;
avail_postfix = kasprintf(GFP_KERNEL,
"%s_available",
iio_chan_info_postfix[i]);