On Sat, 25 Aug 2018 09:30:55 +0100
Jonathan Cameron <ji...@kernel.org> wrote:

> On Thu, 23 Aug 2018 23:24:35 +0200
> Geert Uytterhoeven <ge...@linux-m68k.org> wrote:
> 
> > With gcc 4.1.2:
> > 
> >     drivers/iio/proximity/isl29501.c: In function ‘isl29501_register_write’:
> >     drivers/iio/proximity/isl29501.c:235: warning: ‘msb’ may be used 
> > uninitialized in this function
> > 
> > While this is a false positive, it can easily be avoided by removing the
> > "msb" intermediate variable.
> > Remove the "lsb" intermediate variable for consistency.
> > 
> > Signed-off-by: Geert Uytterhoeven <ge...@linux-m68k.org>  
> 
> Looks sensible to me, but I'd obviously like to leave a little time for 
> Mathieu to comment as it's his driver.
Long enough. I guess Mathieu is busy so I'll apply this (mostly before
it goes so far back in my email that I loose it)

Applied to the togreg branch of iio.git and pushed out as testing for
the autobuilders to play with it.  I thought about marking for stable
to reduce noise but decided that compiler is old enough (and I've not
seen it with GCC 8 IIRC) that I wouldn't bother.

Basically I'm taking this on the merits of it being better code rather 
than the warning fix :)

Thanks,

Jonathan
> 
> Jonathan
> 
> > ---
> > Compile-tested only.
> > ---
> >  drivers/iio/proximity/isl29501.c | 12 ++----------
> >  1 file changed, 2 insertions(+), 10 deletions(-)
> > 
> > diff --git a/drivers/iio/proximity/isl29501.c 
> > b/drivers/iio/proximity/isl29501.c
> > index e5e94540f404dd2c..5ae549075b27c50d 100644
> > --- a/drivers/iio/proximity/isl29501.c
> > +++ b/drivers/iio/proximity/isl29501.c
> > @@ -232,7 +232,6 @@ static u32 isl29501_register_write(struct 
> > isl29501_private *isl29501,
> >                                u32 value)
> >  {
> >     const struct isl29501_register_desc *reg = &isl29501_registers[name];
> > -   u8 msb, lsb;
> >     int ret;
> >  
> >     if (!reg->msb && value > U8_MAX)
> > @@ -241,22 +240,15 @@ static u32 isl29501_register_write(struct 
> > isl29501_private *isl29501,
> >     if (value > U16_MAX)
> >             return -ERANGE;
> >  
> > -   if (!reg->msb) {
> > -           lsb = value & 0xFF;
> > -   } else {
> > -           msb = (value >> 8) & 0xFF;
> > -           lsb = value & 0xFF;
> > -   }
> > -
> >     mutex_lock(&isl29501->lock);
> >     if (reg->msb) {
> >             ret = i2c_smbus_write_byte_data(isl29501->client,
> > -                                           reg->msb, msb);
> > +                                           reg->msb, value >> 8);
> >             if (ret < 0)
> >                     goto err;
> >     }
> >  
> > -   ret = i2c_smbus_write_byte_data(isl29501->client, reg->lsb, lsb);
> > +   ret = i2c_smbus_write_byte_data(isl29501->client, reg->lsb, value);
> >  
> >  err:
> >     mutex_unlock(&isl29501->lock);  
> 

Reply via email to