Re: [PATCH] iio: core: Fix suspicious sizeof usage

From: Orson Zhai
Date: Thu Apr 27 2017 - 03:33:08 EST


On Thu, Apr 27, 2017 at 06:32:22AM +0100, Jonathan Cameron wrote:
> On 25/04/17 02:16, Orson Zhai wrote:
> > Pointer size is variours in different system, say 32bit for 4 and 64bit
> > for 8. The 'sizeof(infomask)' may lead to wrong bit numbers.
> >
> > Signed-off-by: Orson Zhai <orson.zhai@xxxxxxxxxxxxxx>
> That's certainly been there a while. oops.
>
> Anyhow, whilst clearly garbage, it doesn't actually have an effect
> at the moment due to the relatively small number of bits that can be
> set and the fact this is limited by 32 bit platforms anyway.
>
> So applied to the togreg branch of iio.git and pushed out as
> testing for the auto builders to play with it.

Thank you!

-Orson

>
> Thanks,
>
> Jonathan
> > ---
> > drivers/iio/industrialio-core.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> > index 3ff91e0..795f53c 100644
> > --- a/drivers/iio/industrialio-core.c
> > +++ b/drivers/iio/industrialio-core.c
> > @@ -1089,7 +1089,7 @@ static int iio_device_add_info_mask_type(struct iio_dev *indio_dev,
> > {
> > int i, ret, attrcount = 0;
> >
> > - for_each_set_bit(i, infomask, sizeof(infomask)*8) {
> > + for_each_set_bit(i, infomask, sizeof(*infomask)*8) {
> > if (i >= ARRAY_SIZE(iio_chan_info_postfix))
> > return -EINVAL;
> > ret = __iio_add_chan_devattr(iio_chan_info_postfix[i],
> > @@ -1118,7 +1118,7 @@ static int iio_device_add_info_mask_type_avail(struct iio_dev *indio_dev,
> > int i, ret, attrcount = 0;
> > char *avail_postfix;
> >
> > - for_each_set_bit(i, infomask, sizeof(infomask) * 8) {
> > + for_each_set_bit(i, infomask, sizeof(*infomask) * 8) {
> > avail_postfix = kasprintf(GFP_KERNEL,
> > "%s_available",
> > iio_chan_info_postfix[i]);
> >
>