Reviewed-by: Robert Coulson <robert.coulson@xxxxxxxxxxxx> > -----Original Message----- > From: Guenter Roeck [mailto:linux@xxxxxxxxxxxx] > Sent: Thursday, April 05, 2012 2:52 PM > To: lm-sensors > Cc: Robert Coulson; Guenter Roeck > Subject: [PATCH v2] hwmon: (smsc47m1) Fix compiler warning > > 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> > --- > v2: Don't assign an integer return value to an unsigned > > drivers/hwmon/smsc47m1.c | 19 ++++++++++--------- > 1 files changed, 10 insertions(+), 9 deletions(-) > > diff --git a/drivers/hwmon/smsc47m1.c b/drivers/hwmon/smsc47m1.c > index c590c14..b5aa38d 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,13 +938,15 @@ static int __init sm_smsc47m1_init(void) > unsigned short address; > struct smsc47m1_sio_data sio_data; > > - if (smsc47m1_find(&address, &sio_data)) > - return -ENODEV; > + err = smsc47m1_find(&sio_data); > + if (err < 0) > + return err; > + address = err; > > /* Sets global pdev as a side effect */ > err = smsc47m1_device_add(address, &sio_data); > if (err) > - goto exit; > + return err; > > err = platform_driver_probe(&smsc47m1_driver, smsc47m1_probe); > if (err) > @@ -955,7 +957,6 @@ static int __init sm_smsc47m1_init(void) > exit_device: > platform_device_unregister(pdev); > smsc47m1_restore(&sio_data); > -exit: > return err; > } > > -- > 1.7.5.4 > > _______________________________________________ lm-sensors mailing list lm-sensors@xxxxxxxxxxxxxx http://lists.lm-sensors.org/mailman/listinfo/lm-sensors