Hi, Static analysis on drivers/iio/accel/sca3000.c on linux-next has detected an issue in the function sca3000_ring_int_process. The issue is described as follows (prefixed by >>>) static void sca3000_ring_int_process(u8 val, struct iio_dev *indio_dev) { struct sca3000_state *st = iio_priv(indio_dev); int ret, i, num_available; mutex_lock(&st->lock); if (val & SCA3000_REG_INT_STATUS_HALF) { ret = spi_w8r8(st->us, SCA3000_READ_REG(SCA3000_REG_BUF_COUNT_ADDR)); >>> >>> the call to spi_w8r8 returns 0 on success or -ve on an error >>> if (ret) goto error_ret; >>> >>> ret is always zero, at this point, so num_available is zero too >>> num_available = ret; /* * num_available is the total number of samples available * i.e. number of time points * number of channels. */ ret = sca3000_read_data(st, SCA3000_REG_RING_OUT_ADDR, num_available * 2); if (ret) goto error_ret; >>> >>> num_available is zero, so for-loop is never executed. >>> for (i = 0; i < num_available / 3; i++) { /* * Dirty hack to cover for 11 bit in fifo, 13 bit * direct reading. * * In theory the bottom two bits are undefined. * In reality they appear to always be 0. */ iio_push_to_buffers(indio_dev, st->rx + i * 3 * 2); } } I'm not sure what the logic should be to fix this, so I'm reporting this as an issue. Regards, Colin