On Wed, 2019-10-30 at 13:55 +0200, Alexandru Ardelean wrote: > The inline read functions in the ADIS library don't check the return > value > of the `adis_read_reg()` function and assign the value of `tmp` > regardless. > > Fix this by checking if return value is zero and only then assigning the > value of `tmp`. > @Jonathan: Please disregard this. I will re-spin this as a series. It turned out that the whole thing/changeset is much bigger than I initially anticipated. I think I found the reason why we (at ADI) weren't catching the ADIS warnings/errors, before upstreaming. It turns out, that we were only testing with ARM & ARM64 compilers, while the compilers that were hitting us with warnings are x86_64. I do remember [from past experiences] that different GCC compilers report different [often valid] types of errors. But, if I don't need to work with too many ARCHs, I do forget about this aspect. In any case, I've updated our CI to also include a build-run with x86_64 for all ADI drivers. And we may also extend this to cover the entire kernel [later]. Thanks Alex > Fixes: 57a1228a06b7a ("iio:imu:adis: Add support for 32bit registers") > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@xxxxxxxxxx> > --- > include/linux/iio/imu/adis.h | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/include/linux/iio/imu/adis.h b/include/linux/iio/imu/adis.h > index 4c53815bb729..92aae14593bf 100644 > --- a/include/linux/iio/imu/adis.h > +++ b/include/linux/iio/imu/adis.h > @@ -129,7 +129,8 @@ static inline int adis_read_reg_16(struct adis *adis, > unsigned int reg, > int ret; > > ret = adis_read_reg(adis, reg, &tmp, 2); > - *val = tmp; > + if (ret == 0) > + *val = tmp; > > return ret; > } > @@ -147,7 +148,8 @@ static inline int adis_read_reg_32(struct adis *adis, > unsigned int reg, > int ret; > > ret = adis_read_reg(adis, reg, &tmp, 4); > - *val = tmp; > + if (ret == 0) > + *val = tmp; > > return ret; > }