Re: [PATCH 1/4] hwmon: (smsc47b397) Fix compiler warning

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

 



On Wed, 28 Mar 2012 09:38:25 -0700, Guenter Roeck wrote:
> Some configurations produce the following compiler warning:
> 
> drivers/hwmon/smsc47b397.c: In function 'smsc47b397_init':
> drivers/hwmon/smsc47b397.c:385: 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 smsc47b397_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 (64 bytes for x86_64).
> 
> Cc: Mark M. Hoffman <mhoffman@xxxxxxxxxxxxx>
> Signed-off-by: Guenter Roeck <linux@xxxxxxxxxxxx>
> ---
>  drivers/hwmon/smsc47b397.c |   14 ++++++++------
>  1 files changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/hwmon/smsc47b397.c b/drivers/hwmon/smsc47b397.c
> index d3b778d..c5f6be4 100644
> --- a/drivers/hwmon/smsc47b397.c
> +++ b/drivers/hwmon/smsc47b397.c
> @@ -343,10 +343,11 @@ exit:
>  	return err;
>  }
>  
> -static int __init smsc47b397_find(unsigned short *addr)
> +static int __init smsc47b397_find(void)
>  {
>  	u8 id, rev;
>  	char *name;
> +	unsigned short addr;
>  
>  	superio_enter();
>  	id = force_id ? force_id : superio_inb(SUPERIO_REG_DEVID);
> @@ -370,14 +371,14 @@ static int __init smsc47b397_find(unsigned short *addr)
>  	rev = superio_inb(SUPERIO_REG_DEVREV);
>  
>  	superio_select(SUPERIO_REG_LD8);
> -	*addr = (superio_inb(SUPERIO_REG_BASE_MSB) << 8)
> +	addr = (superio_inb(SUPERIO_REG_BASE_MSB) << 8)
>  		 |  superio_inb(SUPERIO_REG_BASE_LSB);
>  
>  	pr_info("found SMSC %s (base address 0x%04x, revision %u)\n",
> -		name, *addr, rev);
> +		name, addr, rev);
>  
>  	superio_exit();
> -	return 0;
> +	return addr;
>  }
>  
>  static int __init smsc47b397_init(void)
> @@ -385,9 +386,10 @@ static int __init smsc47b397_init(void)
>  	unsigned short address;
>  	int ret;
>  
> -	ret = smsc47b397_find(&address);
> -	if (ret)
> +	ret = smsc47b397_find();
> +	if (ret < 0)
>  		return ret;
> +	address = ret;
>  
>  	ret = platform_driver_register(&smsc47b397_driver);
>  	if (ret)

Acked-by: Jean Delvare <khali@xxxxxxxxxxxx>

-- 
Jean Delvare

_______________________________________________
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