iio: light: isl29501: Simplify code to kill compiler warning
diff mbox series

Message ID 20180823212436.17423-1-geert@linux-m68k.org
State New
Headers show
Series
  • iio: light: isl29501: Simplify code to kill compiler warning
Related show

Commit Message

Geert Uytterhoeven Aug. 23, 2018, 9:24 p.m. UTC
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 <geert@linux-m68k.org>
---
Compile-tested only.
---
 drivers/iio/proximity/isl29501.c | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

Comments

Jonathan Cameron Aug. 25, 2018, 8:30 a.m. UTC | #1
On Thu, 23 Aug 2018 23:24:35 +0200
Geert Uytterhoeven <geert@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 <geert@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.

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);
Jonathan Cameron Sept. 2, 2018, 8:59 a.m. UTC | #2
On Sat, 25 Aug 2018 09:30:55 +0100
Jonathan Cameron <jic23@kernel.org> wrote:

> On Thu, 23 Aug 2018 23:24:35 +0200
> Geert Uytterhoeven <geert@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 <geert@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);  
>
Geert Uytterhoeven Sept. 2, 2018, 9:48 a.m. UTC | #3
Hi Jonathan,

On Sun, Sep 2, 2018 at 10:59 AM Jonathan Cameron
<jic23@jic23.retrosnub.co.uk> wrote:
> On Sat, 25 Aug 2018 09:30:55 +0100
> Jonathan Cameron <jic23@kernel.org> wrote:
>
> > On Thu, 23 Aug 2018 23:24:35 +0200
> > Geert Uytterhoeven <geert@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 <geert@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.

Thanks!

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

JFTR: I only send patches for these warnings if they (a) fix a real bug, or (b)
improve the code.

Gr{oetje,eeting}s,

                        Geert

Patch
diff mbox series

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);