All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: linux-iio@vger.kernel.org
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Peter Meerwald <pmeerw@pmeerw.net>,
	Jonathan Cameron <Jonathan.Cameron@huawei.com>
Subject: Re: [PATCH v3 09/27] iio:light:max44000 Fix timestamp alignment and prevent data leak.
Date: Sun, 9 Aug 2020 18:24:13 +0100	[thread overview]
Message-ID: <20200809182413.7791e236@archlinux> (raw)
In-Reply-To: <20200722155103.979802-10-jic23@kernel.org>

On Wed, 22 Jul 2020 16:50:45 +0100
Jonathan Cameron <jic23@kernel.org> wrote:

> From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> 
> One of a class of bugs pointed out by Lars in a recent review.
> iio_push_to_buffers_with_timestamp assumes the buffer used is aligned
> to the size of the timestamp (8 bytes).  This is not guaranteed in
> this driver which uses a 16 byte array of smaller elements on the stack.
> As Lars also noted this anti pattern can involve a leak of data to
> userspace and that indeed can happen here.  We close both issues by
> moving to a suitable structure in the iio_priv().
> This data is allocated with kzalloc so no data can leak appart
> from previous readings.
> 
> It is necessary to force the alignment of ts to avoid the padding
> on x86_32 being different from 64 bit platorms (it alows for
> 4 bytes aligned 8 byte types.
> 
> Fixes: 06ad7ea10e2b ("max44000: Initial triggered buffer support")
> Reported-by: Lars-Peter Clausen <lars@metafoo.de>
> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Applied and marked for stable

Thanks,

Jonathan

> ---
>  drivers/iio/light/max44000.c | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/iio/light/max44000.c b/drivers/iio/light/max44000.c
> index aa8ed1e3e89a..b8e721bced5b 100644
> --- a/drivers/iio/light/max44000.c
> +++ b/drivers/iio/light/max44000.c
> @@ -75,6 +75,11 @@
>  struct max44000_data {
>  	struct mutex lock;
>  	struct regmap *regmap;
> +	/* Ensure naturally aligned timestamp */
> +	struct {
> +		u16 channels[2];
> +		s64 ts __aligned(8);
> +	} scan;
>  };
>  
>  /* Default scale is set to the minimum of 0.03125 or 1 / (1 << 5) lux */
> @@ -488,7 +493,6 @@ static irqreturn_t max44000_trigger_handler(int irq, void *p)
>  	struct iio_poll_func *pf = p;
>  	struct iio_dev *indio_dev = pf->indio_dev;
>  	struct max44000_data *data = iio_priv(indio_dev);
> -	u16 buf[8]; /* 2x u16 + padding + 8 bytes timestamp */
>  	int index = 0;
>  	unsigned int regval;
>  	int ret;
> @@ -498,17 +502,17 @@ static irqreturn_t max44000_trigger_handler(int irq, void *p)
>  		ret = max44000_read_alsval(data);
>  		if (ret < 0)
>  			goto out_unlock;
> -		buf[index++] = ret;
> +		data->scan.channels[index++] = ret;
>  	}
>  	if (test_bit(MAX44000_SCAN_INDEX_PRX, indio_dev->active_scan_mask)) {
>  		ret = regmap_read(data->regmap, MAX44000_REG_PRX_DATA, &regval);
>  		if (ret < 0)
>  			goto out_unlock;
> -		buf[index] = regval;
> +		data->scan.channels[index] = regval;
>  	}
>  	mutex_unlock(&data->lock);
>  
> -	iio_push_to_buffers_with_timestamp(indio_dev, buf,
> +	iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
>  					   iio_get_time_ns(indio_dev));
>  	iio_trigger_notify_done(indio_dev->trig);
>  	return IRQ_HANDLED;


  reply	other threads:[~2020-08-09 17:24 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-22 15:50 [PATCH v3 00/27] IIO: Fused set 1 and 2 of timestamp alignment fixes Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 01/27] iio: accel: kxsd9: Fix alignment of local buffer Jonathan Cameron
2020-08-09 17:07   ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 02/27] iio:accel:mma8452: Fix timestamp alignment and prevent data leak Jonathan Cameron
2020-08-09 17:14   ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 03/27] iio:accel:bmc150-accel: " Jonathan Cameron
2020-07-29 17:12   ` Srinivas Pandruvada
2020-08-09 17:18     ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 04/27] iio:accel:mma7455: " Jonathan Cameron
2020-08-09 17:19   ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 05/27] iio:gyro:itg3200: " Jonathan Cameron
2020-09-19 15:41   ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 06/27] iio:proximity:mb1232: " Jonathan Cameron
2020-08-09 17:20   ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 07/27] iio:chemical:ccs811: " Jonathan Cameron
2020-08-09 17:23   ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 08/27] iio:light:si1145: " Jonathan Cameron
2020-07-22 19:43   ` Andy Shevchenko
2020-07-22 19:45     ` Andy Shevchenko
2020-07-23 11:25       ` Jonathan Cameron
2020-09-19 15:46         ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 09/27] iio:light:max44000 " Jonathan Cameron
2020-08-09 17:24   ` Jonathan Cameron [this message]
2020-07-22 15:50 ` [PATCH v3 10/27] iio:light:rpr0521 " Jonathan Cameron
2020-07-22 19:47   ` Andy Shevchenko
2020-07-23 11:29     ` Jonathan Cameron
2020-09-19 16:31       ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 11/27] iio:light:st_uvis25 " Jonathan Cameron
2020-07-22 19:48   ` Andy Shevchenko
2020-07-22 15:50 ` [PATCH v3 12/27] iio:light:ltr501 Fix timestamp alignment issue Jonathan Cameron
2020-08-09 17:27   ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 13/27] iio:magnetometer:ak8975 Fix alignment and data leak issues Jonathan Cameron
2020-08-09 17:30   ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 14/27] iio:magnetometer:mag3110 " Jonathan Cameron
2020-07-23 12:13   ` Andy Shevchenko
2020-07-22 15:50 ` [PATCH v3 15/27] iio:imu:bmi160 " Jonathan Cameron
2020-09-19 15:58   ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 16/27] iio:imu:st_lsm6dsx " Jonathan Cameron
2020-09-19 16:09   ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 17/27] iio:imu:inv_mpu6050 Fix dma and ts " Jonathan Cameron
2020-07-24  8:27   ` Jean-Baptiste Maneyrol
2020-09-19 16:51     ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 18/27] iio:imu:inv_mpu6050: Use regmap_noinc_read for fifo reads Jonathan Cameron
2020-07-23 12:15   ` Andy Shevchenko
2020-07-23 12:28     ` Jonathan Cameron
2020-07-24  8:29   ` Jean-Baptiste Maneyrol
2020-09-19 16:55     ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 19/27] iio:pressure:mpl3115 Force alignment of buffer Jonathan Cameron
2020-07-23 12:17   ` Andy Shevchenko
2020-07-23 12:31     ` Jonathan Cameron
2020-09-19 17:02       ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 20/27] iio:adc:ti-adc081c Fix alignment and data leak issues Jonathan Cameron
2020-08-09 17:34   ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 21/27] iio:adc:ti-adc084s021 " Jonathan Cameron
2020-08-09 17:36   ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 22/27] iio:adc:ti-adc084s021 Tidy up endian types Jonathan Cameron
2020-08-09 17:47   ` Jonathan Cameron
2020-09-13 12:01     ` Jonathan Cameron
2020-09-13 12:06       ` Jonathan Cameron
2020-11-29 13:28         ` Jonathan Cameron
2020-07-22 15:50 ` [PATCH v3 23/27] iio:adc:ti-ads124s08 Fix alignment and data leak issues Jonathan Cameron
2020-07-22 20:54   ` Andy Shevchenko
2020-07-23 11:23     ` Jonathan Cameron
2020-07-22 15:51 ` [PATCH v3 24/27] iio:adc:ti-adc0832 Fix alignment issue with timestamp Jonathan Cameron
2020-09-19 16:18   ` Jonathan Cameron
2020-07-22 15:51 ` [PATCH v3 25/27] iio:adc:ti-adc12138 " Jonathan Cameron
2020-09-19 16:21   ` Jonathan Cameron
2020-07-22 15:51 ` [PATCH v3 26/27] iio:adc:ina2xx Fix timestamp alignment issue Jonathan Cameron
2020-08-09 17:38   ` Jonathan Cameron
2020-07-22 15:51 ` [PATCH v3 27/27] iio:adc:max1118 Fix alignment of timestamp and data leak issues Jonathan Cameron
2020-08-09 17:39   ` Jonathan Cameron
2020-07-23 12:23 ` [PATCH v3 00/27] IIO: Fused set 1 and 2 of timestamp alignment fixes Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200809182413.7791e236@archlinux \
    --to=jic23@kernel.org \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=pmeerw@pmeerw.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.