Re: [PATCH v3 26/27] staging: iio: resolver: ad2s1210: implement fault events

Dan Carpenter
2023-10-03T10:53:30Z

Hi David,

kernel test robot noticed the following build warnings:

url: https://github.com/intel-lab-lkp/linux/commits/David-Lechner/dt-bindings-iio-resolver-add-devicetree-bindings-for-ad2s1210/20230930-014031
base: 5e99f692d4e32e3250ab18d511894ca797407aec
patch link: https://lore.kernel.org/r/20230929-ad2s1210-mainline-v3-26-fa4364281745%40baylibre.com
patch subject: [PATCH v3 26/27] staging: iio: resolver: ad2s1210: implement fault events
config: x86_64-randconfig-161-20231002 (https://download.01.org/0day-ci/archive/20231003/202310031839.tKR53HoP-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231003/202310031839.tKR53HoP-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202310031839.tKR53HoP-lkp@intel.com/

smatch warnings:
drivers/staging/iio/resolver/ad2s1210.c:436 ad2s1210_single_conversion() error: buffer overflow 'st->rx' 2 <= 2

vim +436 drivers/staging/iio/resolver/ad2s1210.c

ecf16f4922f691 David Lechner 2023-09-29 391 static int ad2s1210_single_conversion(struct iio_dev *indio_dev,
29148543c52146 Jonathan Cameron 2011-10-05 392 struct iio_chan_spec const *chan,
e9336a85ceb885 David Lechner 2023-09-29 393 int *val)
817e5c65c511d4 Graf Yang 2010-10-27 394 {
ecf16f4922f691 David Lechner 2023-09-29 395 struct ad2s1210_state *st = iio_priv(indio_dev);
ecf16f4922f691 David Lechner 2023-09-29 396 s64 timestamp;
69cc7fbdcdf2e3 David Lechner 2023-09-29 397 int ret;
817e5c65c511d4 Graf Yang 2010-10-27 398
817e5c65c511d4 Graf Yang 2010-10-27 399 mutex_lock(&st->lock);
69cc7fbdcdf2e3 David Lechner 2023-09-29 400 gpiod_set_value(st->sample_gpio, 1);
ecf16f4922f691 David Lechner 2023-09-29 401 timestamp = iio_get_time_ns(indio_dev);
817e5c65c511d4 Graf Yang 2010-10-27 402 /* delay (6 * tck + 20) nano seconds */
817e5c65c511d4 Graf Yang 2010-10-27 403 udelay(1);
817e5c65c511d4 Graf Yang 2010-10-27 404
29148543c52146 Jonathan Cameron 2011-10-05 405 switch (chan->type) {
29148543c52146 Jonathan Cameron 2011-10-05 406 case IIO_ANGL:
69cc7fbdcdf2e3 David Lechner 2023-09-29 407 ret = ad2s1210_set_mode(st, MOD_POS);
29148543c52146 Jonathan Cameron 2011-10-05 408 break;
29148543c52146 Jonathan Cameron 2011-10-05 409 case IIO_ANGL_VEL:
69cc7fbdcdf2e3 David Lechner 2023-09-29 410 ret = ad2s1210_set_mode(st, MOD_VEL);
29148543c52146 Jonathan Cameron 2011-10-05 411 break;
29148543c52146 Jonathan Cameron 2011-10-05 412 default:
29148543c52146 Jonathan Cameron 2011-10-05 413 ret = -EINVAL;
29148543c52146 Jonathan Cameron 2011-10-05 414 break;
29148543c52146 Jonathan Cameron 2011-10-05 415 }
29148543c52146 Jonathan Cameron 2011-10-05 416 if (ret < 0)
29148543c52146 Jonathan Cameron 2011-10-05 417 goto error_ret;
ecf16f4922f691 David Lechner 2023-09-29 418 ret = spi_read(st->sdev, &st->sample, 3);
29148543c52146 Jonathan Cameron 2011-10-05 419 if (ret < 0)
817e5c65c511d4 Graf Yang 2010-10-27 420 goto error_ret;
29148543c52146 Jonathan Cameron 2011-10-05 421
29148543c52146 Jonathan Cameron 2011-10-05 422 switch (chan->type) {
29148543c52146 Jonathan Cameron 2011-10-05 423 case IIO_ANGL:
ecf16f4922f691 David Lechner 2023-09-29 424 *val = be16_to_cpu(st->sample.raw);
29148543c52146 Jonathan Cameron 2011-10-05 425 ret = IIO_VAL_INT;
29148543c52146 Jonathan Cameron 2011-10-05 426 break;
29148543c52146 Jonathan Cameron 2011-10-05 427 case IIO_ANGL_VEL:
ecf16f4922f691 David Lechner 2023-09-29 428 *val = (s16)be16_to_cpu(st->sample.raw);
29148543c52146 Jonathan Cameron 2011-10-05 429 ret = IIO_VAL_INT;
29148543c52146 Jonathan Cameron 2011-10-05 430 break;
29148543c52146 Jonathan Cameron 2011-10-05 431 default:
5e99f692d4e32e David Lechner 2023-09-21 432 ret = -EINVAL;
5e99f692d4e32e David Lechner 2023-09-21 433 break;
29148543c52146 Jonathan Cameron 2011-10-05 434 }
29148543c52146 Jonathan Cameron 2011-10-05 435
ecf16f4922f691 David Lechner 2023-09-29 @436 ad2s1210_push_events(indio_dev, st->rx[2], timestamp);
^^^^^^
Apparently ->rx only has 2 elements.

ecf16f4922f691 David Lechner 2023-09-29 437
817e5c65c511d4 Graf Yang 2010-10-27 438 error_ret:
69cc7fbdcdf2e3 David Lechner 2023-09-29 439 gpiod_set_value(st->sample_gpio, 0);
817e5c65c511d4 Graf Yang 2010-10-27 440 /* delay (2 * tck + 20) nano seconds */
817e5c65c511d4 Graf Yang 2010-10-27 441 udelay(1);
817e5c65c511d4 Graf Yang 2010-10-27 442 mutex_unlock(&st->lock);
29148543c52146 Jonathan Cameron 2011-10-05 443 return ret;
817e5c65c511d4 Graf Yang 2010-10-27 444 }

--
0-DAY CI Kernel Test Service