Bläddra i källkod

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>
Guenter Roeck 13 år sedan
förälder
incheckning
d7ee11157f
1 ändrade filer med 8 tillägg och 9 borttagningar
  1. 8 9
      drivers/hwmon/pmbus/pmbus_core.c

+ 8 - 9
drivers/hwmon/pmbus/pmbus_core.c

@@ -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);
-	if (err)
-		return err;
+	val = pmbus_get_boolean(data, attr->index);
+	if (val < 0)
+		return val;
 	return snprintf(buf, PAGE_SIZE, "%d\n", val);
 	return snprintf(buf, PAGE_SIZE, "%d\n", val);
 }
 }