[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <613577badc9937049d40ff14d11646f64b3dac36.camel@perches.com>
Date: Mon, 20 Jul 2020 09:50:26 -0700
From: Joe Perches <joe@...ches.com>
To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
linux-kernel@...r.kernel.org
Cc: stable@...r.kernel.org, Lars-Peter Clausen <lars@...afoo.de>,
Matt Ranostay <matt.ranostay@...sulko.com>,
Alison Schofield <amsfield22@...il.com>,
Jonathan Cameron <Jonathan.Cameron@...wei.com>
Subject: Re: [PATCH 5.4 047/215] iio:humidity:hdc100x Fix alignment and data
leak issues
On Mon, 2020-07-20 at 17:35 +0200, Greg Kroah-Hartman wrote:
> From: Jonathan Cameron <Jonathan.Cameron@...wei.com>
>
> commit ea5e7a7bb6205d24371373cd80325db1bc15eded upstream.
>
> 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 an 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() data.
> This data is allocated with kzalloc so no data can leak apart
> from previous readings.
[]
> +++ b/drivers/iio/humidity/hdc100x.c
> @@ -38,6 +38,11 @@ struct hdc100x_data {
>
> /* integration time of the sensor */
> int adc_int_us[2];
> + /* Ensure natural alignment of timestamp */
> + struct {
> + __be16 channels[2];
> + s64 ts __aligned(8);
Why does an s64 need __aligned(8) ?
This seems needlessly redundant.
Isn't this naturally aligned by the compiler?
The struct isn't packed.
Powered by blists - more mailing lists