mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 20:51:44 +00:00
hwmon: (pmbus_core) Fix compiler warning
Some configurations produce the following compiler warning: drivers/hwmon/pmbus/pmbus_core.c: In function 'pmbus_show_boolean': drivers/hwmon/pmbus/pmbus_core.c:752: warning: 'val' may be used uninitialized in this function While this is a false positive, it can easily be fixed by overloading the return value from pmbus_get_boolean with both val and error return code (val is a boolean and thus never negative). Signed-off-by: Guenter Roeck <linux@roeck-us.net> Reviewed-by: Robert Coulson <robert.coulson@ericsson.com>
This commit is contained in:
parent
1d0045ee4a
commit
d7ee11157f
@ -710,13 +710,13 @@ static u16 pmbus_data2reg(struct pmbus_data *data,
|
|||||||
* If a negative value is stored in any of the referenced registers, this value
|
* If a negative value is stored in any of the referenced registers, this value
|
||||||
* reflects an error code which will be returned.
|
* reflects an error code which will be returned.
|
||||||
*/
|
*/
|
||||||
static int pmbus_get_boolean(struct pmbus_data *data, int index, int *val)
|
static int pmbus_get_boolean(struct pmbus_data *data, int index)
|
||||||
{
|
{
|
||||||
u8 s1 = (index >> 24) & 0xff;
|
u8 s1 = (index >> 24) & 0xff;
|
||||||
u8 s2 = (index >> 16) & 0xff;
|
u8 s2 = (index >> 16) & 0xff;
|
||||||
u8 reg = (index >> 8) & 0xff;
|
u8 reg = (index >> 8) & 0xff;
|
||||||
u8 mask = index & 0xff;
|
u8 mask = index & 0xff;
|
||||||
int status;
|
int ret, status;
|
||||||
u8 regval;
|
u8 regval;
|
||||||
|
|
||||||
status = data->status[reg];
|
status = data->status[reg];
|
||||||
@ -725,7 +725,7 @@ static int pmbus_get_boolean(struct pmbus_data *data, int index, int *val)
|
|||||||
|
|
||||||
regval = status & mask;
|
regval = status & mask;
|
||||||
if (!s1 && !s2)
|
if (!s1 && !s2)
|
||||||
*val = !!regval;
|
ret = !!regval;
|
||||||
else {
|
else {
|
||||||
long v1, v2;
|
long v1, v2;
|
||||||
struct pmbus_sensor *sensor1, *sensor2;
|
struct pmbus_sensor *sensor1, *sensor2;
|
||||||
@ -739,9 +739,9 @@ static int pmbus_get_boolean(struct pmbus_data *data, int index, int *val)
|
|||||||
|
|
||||||
v1 = pmbus_reg2data(data, sensor1);
|
v1 = pmbus_reg2data(data, sensor1);
|
||||||
v2 = pmbus_reg2data(data, sensor2);
|
v2 = pmbus_reg2data(data, sensor2);
|
||||||
*val = !!(regval && v1 >= v2);
|
ret = !!(regval && v1 >= v2);
|
||||||
}
|
}
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t pmbus_show_boolean(struct device *dev,
|
static ssize_t pmbus_show_boolean(struct device *dev,
|
||||||
@ -750,11 +750,10 @@ static ssize_t pmbus_show_boolean(struct device *dev,
|
|||||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
|
||||||
struct pmbus_data *data = pmbus_update_device(dev);
|
struct pmbus_data *data = pmbus_update_device(dev);
|
||||||
int val;
|
int val;
|
||||||
int err;
|
|
||||||
|
|
||||||
err = pmbus_get_boolean(data, attr->index, &val);
|
val = pmbus_get_boolean(data, attr->index);
|
||||||
if (err)
|
if (val < 0)
|
||||||
return err;
|
return val;
|
||||||
return snprintf(buf, PAGE_SIZE, "%d\n", val);
|
return snprintf(buf, PAGE_SIZE, "%d\n", val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user