Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

iio: accel: adxl380: Avoid reading more entries than present in FIFO

The interrupt handler reads FIFO entries in batches of N samples, where N
is the number of scan elements that have been enabled. However, the sensor
fills the FIFO one sample at a time, even when more than one channel is
enabled. Therefore,the number of entries reported by the FIFO status
registers may not be a multiple of N; if this number is not a multiple, the
number of entries read from the FIFO may exceed the number of entries
actually present.

To fix the above issue, round down the number of FIFO entries read from the
status registers so that it is always a multiple of N.

Fixes: df36de13677a ("iio: accel: add ADXL380 driver")
Signed-off-by: Francesco Lavra <flavra@baylibre.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Francesco Lavra and committed by
Jonathan Cameron
c1b14015 b0913a44

+1
+1
drivers/iio/accel/adxl380.c
··· 966 966 if (ret) 967 967 return IRQ_HANDLED; 968 968 969 + fifo_entries = rounddown(fifo_entries, st->fifo_set_size); 969 970 for (i = 0; i < fifo_entries; i += st->fifo_set_size) { 970 971 ret = regmap_noinc_read(st->regmap, ADXL380_FIFO_DATA, 971 972 &st->fifo_buf[i],