Commit a1caeeba authored by Jonathan Cameron's avatar Jonathan Cameron
Browse files

iio: adc: ad7768-1: Fix too small buffer passed to iio_push_to_buffers_with_timestamp()



Add space for the timestamp to be inserted.  Also ensure correct
alignment for passing to iio_push_to_buffers_with_timestamp()

Fixes: a5f8c7da ("iio: adc: Add AD7768-1 ADC basic support")
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20210501165314.511954-2-jic23@kernel.org
Cc: <Stable@vger.kernel.org>
parent 98b7b0ca
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -167,6 +167,10 @@ struct ad7768_state {
	 * transfer buffers to live in their own cache lines.
	 */
	union {
		struct {
			__be32 chan;
			s64 timestamp;
		} scan;
		__be32 d32;
		u8 d8[2];
	} data ____cacheline_aligned;
@@ -469,11 +473,11 @@ static irqreturn_t ad7768_trigger_handler(int irq, void *p)

	mutex_lock(&st->lock);

	ret = spi_read(st->spi, &st->data.d32, 3);
	ret = spi_read(st->spi, &st->data.scan.chan, 3);
	if (ret < 0)
		goto err_unlock;

	iio_push_to_buffers_with_timestamp(indio_dev, &st->data.d32,
	iio_push_to_buffers_with_timestamp(indio_dev, &st->data.scan,
					   iio_get_time_ns(indio_dev));

	iio_trigger_notify_done(indio_dev->trig);