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
[Video for Linux]
[Mplayer Users]
[Linux USB Devel]
[Linux Audio Users]
[Photos]
[Yosemite Photos]
[Free Singles Community]
[Linux Kernel]
[Linux SCSI]
[XFree86]
[Yosemite Backpacking]