diff options
| author | Guenter Roeck <linux@roeck-us.net> | 2012-06-02 13:16:32 -0400 |
|---|---|---|
| committer | Guenter Roeck <linux@roeck-us.net> | 2012-06-18 11:48:00 -0400 |
| commit | 2355375efdf10f43680d420023baa97796bfcdff (patch) | |
| tree | 9df2ed9840eaffdc1de36aae951244457d668cfd | |
| parent | ac852edb47b15900886ba2564eeeb13b3b526e3e (diff) | |
hwmon: (emc2103) Fix use of an uninitilized variable in error case
Fix:
emc2103.c: In function set_pwm_enable:
emc2103.c:463:12: warning: conf_reg may be used uninitialized in this function
by checking the return value from read_u8_from_i2c(). This fixes a real problem,
as conf_reg is really uninitialized if read_u8_from_i2c returns an error.
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Robert Coulson <robert.coulson@ericsson.com>
Acked-by: Jean Delvare <khali@linux-fr.org>
| -rw-r--r-- | drivers/hwmon/emc2103.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/hwmon/emc2103.c b/drivers/hwmon/emc2103.c index 9691f664c76e..e7d234b59312 100644 --- a/drivers/hwmon/emc2103.c +++ b/drivers/hwmon/emc2103.c | |||
| @@ -451,11 +451,15 @@ static ssize_t set_pwm_enable(struct device *dev, struct device_attribute *da, | |||
| 451 | data->fan_rpm_control = true; | 451 | data->fan_rpm_control = true; |
| 452 | break; | 452 | break; |
| 453 | default: | 453 | default: |
| 454 | mutex_unlock(&data->update_lock); | 454 | count = -EINVAL; |
| 455 | return -EINVAL; | 455 | goto err; |
| 456 | } | 456 | } |
| 457 | 457 | ||
| 458 | read_u8_from_i2c(client, REG_FAN_CONF1, &conf_reg); | 458 | result = read_u8_from_i2c(client, REG_FAN_CONF1, &conf_reg); |
| 459 | if (result) { | ||
| 460 | count = result; | ||
| 461 | goto err; | ||
| 462 | } | ||
| 459 | 463 | ||
| 460 | if (data->fan_rpm_control) | 464 | if (data->fan_rpm_control) |
| 461 | conf_reg |= 0x80; | 465 | conf_reg |= 0x80; |
| @@ -463,7 +467,7 @@ static ssize_t set_pwm_enable(struct device *dev, struct device_attribute *da, | |||
| 463 | conf_reg &= ~0x80; | 467 | conf_reg &= ~0x80; |
| 464 | 468 | ||
| 465 | i2c_smbus_write_byte_data(client, REG_FAN_CONF1, conf_reg); | 469 | i2c_smbus_write_byte_data(client, REG_FAN_CONF1, conf_reg); |
| 466 | 470 | err: | |
| 467 | mutex_unlock(&data->update_lock); | 471 | mutex_unlock(&data->update_lock); |
| 468 | return count; | 472 | return count; |
| 469 | } | 473 | } |
