On Mon, Jul 09, 2018 at 02:06:59PM +0300, Dan Carpenter wrote: > This code is problematic because we're supposed to be writing an int but > we instead write to only the high 16 bits. This doesn't work on big > endian systems, and there is a potential that the bottom 16 bits are > used without being initialized. > > Fixes: 23ec2774f1cc ("iio: adc: at91-sama5d2_adc: add support for position and pressure channels") > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > This patch sounds good and as it has been tested by Eugen: Acked-by: Ludovic Desroches <ludovic.desroches@xxxxxxxxxxxxx> Thanks Dan and Eugen. > diff --git a/drivers/iio/adc/at91-sama5d2_adc.c b/drivers/iio/adc/at91-sama5d2_adc.c > index e02f7d1c86bc..d5ea84cf6460 100644 > --- a/drivers/iio/adc/at91-sama5d2_adc.c > +++ b/drivers/iio/adc/at91-sama5d2_adc.c > @@ -1296,6 +1296,7 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev, > { > struct at91_adc_state *st = iio_priv(indio_dev); > u32 cor = 0; > + u16 tmp_val; > int ret; > > /* > @@ -1309,7 +1310,8 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev, > mutex_lock(&st->lock); > > ret = at91_adc_read_position(st, chan->channel, > - (u16 *)val); > + &tmp_val); > + *val = tmp_val; > mutex_unlock(&st->lock); > iio_device_release_direct_mode(indio_dev); > > @@ -1322,7 +1324,8 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev, > mutex_lock(&st->lock); > > ret = at91_adc_read_pressure(st, chan->channel, > - (u16 *)val); > + &tmp_val); > + *val = tmp_val; > mutex_unlock(&st->lock); > iio_device_release_direct_mode(indio_dev); > > -- > To unsubscribe from this list: send the line "unsubscribe linux-iio" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html