Re: [Fwd: [PATCH 2/4] hwmon: (smsc47m1) Fix compiler warning]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2012-04-05 at 17:32 -0400, Robert Coulson wrote:
> 
> > -----Original Message-----
> > From: Guenter Roeck 
> > Sent: Thursday, April 05, 2012 10:52 AM
> > To: Robert Coulson
> > Subject: [Fwd:  [PATCH 2/4] hwmon: (smsc47m1) Fix 
> > compiler warning]
> > 
> > -------- Forwarded Message --------
> > From: Guenter Roeck <linux@xxxxxxxxxxxx>
> > To: lm-sensors <lm-sensors@xxxxxxxxxxxxxx>
> > Cc: Guenter Roeck <linux@xxxxxxxxxxxx>
> > Subject:  [PATCH 2/4] hwmon: (smsc47m1) Fix 
> > compiler warning
> > Date: Wed, 28 Mar 2012 12:38:26 -0400
> > 
> > Some configurations produce the following compiler warning:
> > 
> > drivers/hwmon/smsc47m1.c: In function 'sm_smsc47m1_init':
> > drivers/hwmon/smsc47m1.c:938: warning: 'address' may be used 
> > uninitialized in this function
> > 
> > While this is a false positive, it can easily be fixed by 
> > overloading the return
> > value from smsc47m1_find with both address and error return 
> > code (the address
> > is an unsigned short and thus never negative). This also 
> > reduces module size by
> > a few bytes (46 bytes for x86_64).
> > 
> > Signed-off-by: Guenter Roeck <linux@xxxxxxxxxxxx>
> > ---
> >  drivers/hwmon/smsc47m1.c |   15 ++++++++-------
> >  1 files changed, 8 insertions(+), 7 deletions(-)
> > 
> > diff --git a/drivers/hwmon/smsc47m1.c b/drivers/hwmon/smsc47m1.c
> > index c590c14..87b9ab0 100644
> > --- a/drivers/hwmon/smsc47m1.c
> > +++ b/drivers/hwmon/smsc47m1.c
> > @@ -491,10 +491,10 @@ static const struct attribute_group 
> > smsc47m1_group = {
> >  	.attrs = smsc47m1_attributes,
> >  };
> >  
> > -static int __init smsc47m1_find(unsigned short *addr,
> > -				struct smsc47m1_sio_data *sio_data)
> > +static int __init smsc47m1_find(struct smsc47m1_sio_data *sio_data)
> >  {
> >  	u8 val;
> > +	unsigned short addr;
> >  
> >  	superio_enter();
> >  	val = force_id ? force_id : superio_inb(SUPERIO_REG_DEVID);
> > @@ -546,9 +546,9 @@ static int __init smsc47m1_find(unsigned 
> > short *addr,
> >  	}
> >  
> >  	superio_select();
> > -	*addr = (superio_inb(SUPERIO_REG_BASE) << 8)
> > +	addr = (superio_inb(SUPERIO_REG_BASE) << 8)
> >  	      |  superio_inb(SUPERIO_REG_BASE + 1);
> > -	if (*addr == 0) {
> > +	if (addr == 0) {
> >  		pr_info("Device address not set, will not use\n");
> >  		superio_exit();
> >  		return -ENODEV;
> > @@ -565,7 +565,7 @@ static int __init smsc47m1_find(unsigned 
> > short *addr,
> >  	}
> >  
> >  	superio_exit();
> > -	return 0;
> > +	return addr;
> >  }
> >  
> >  /* Restore device to its initial state */
> > @@ -938,8 +938,9 @@ static int __init sm_smsc47m1_init(void)
> >  	unsigned short address;
> >  	struct smsc47m1_sio_data sio_data;
> >  
> > -	if (smsc47m1_find(&address, &sio_data))
> > -		return -ENODEV;
> 
> Please revisit this change; smsc47m1_find() returns an int, whereas address is an unsigned int.
> 
Oh well. Second time this happens. I'll need to be more careful with my
patches.

Thanks,
Guenter

> Thanks,
> 
> *** Rob.
> 
> > +	address = smsc47m1_find(&sio_data);
> > +	if (address < 0)
> > +		return address;
> >  
> >  	/* Sets global pdev as a side effect */
> >  	err = smsc47m1_device_add(address, &sio_data);
> > -- 
> > 1.7.5.4
> > 
> > 
> > _______________________________________________
> > lm-sensors mailing list
> > lm-sensors@xxxxxxxxxxxxxx
> > http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
> > 
> > 
> > 



_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors


[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux