Commit 9d19371d authored by Dan Carpenter's avatar Dan Carpenter Committed by Guenter Roeck

hwmon: (adt7475) Potential error pointer dereferences

The adt7475_update_device() function returns error pointers.  The
problem is that in show_pwmfreq() we dereference it before the check.
And then in pwm_use_point2_pwm_at_crit_show() there isn't a check at
all.  I don't know if it's required, but it silences a static checker
warning and it's doesn't hurt anything to check.
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: default avatarTokunori Ikegami <ikegami@allied-telesis.co.jp>
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 3ad86700
...@@ -962,13 +962,14 @@ static ssize_t show_pwmfreq(struct device *dev, struct device_attribute *attr, ...@@ -962,13 +962,14 @@ static ssize_t show_pwmfreq(struct device *dev, struct device_attribute *attr,
{ {
struct adt7475_data *data = adt7475_update_device(dev); struct adt7475_data *data = adt7475_update_device(dev);
struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr); struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
int i = clamp_val(data->range[sattr->index] & 0xf, 0, int idx;
ARRAY_SIZE(pwmfreq_table) - 1);
if (IS_ERR(data)) if (IS_ERR(data))
return PTR_ERR(data); return PTR_ERR(data);
idx = clamp_val(data->range[sattr->index] & 0xf, 0,
ARRAY_SIZE(pwmfreq_table) - 1);
return sprintf(buf, "%d\n", pwmfreq_table[i]); return sprintf(buf, "%d\n", pwmfreq_table[idx]);
} }
static ssize_t set_pwmfreq(struct device *dev, struct device_attribute *attr, static ssize_t set_pwmfreq(struct device *dev, struct device_attribute *attr,
...@@ -1004,6 +1005,10 @@ static ssize_t pwm_use_point2_pwm_at_crit_show(struct device *dev, ...@@ -1004,6 +1005,10 @@ static ssize_t pwm_use_point2_pwm_at_crit_show(struct device *dev,
char *buf) char *buf)
{ {
struct adt7475_data *data = adt7475_update_device(dev); struct adt7475_data *data = adt7475_update_device(dev);
if (IS_ERR(data))
return PTR_ERR(data);
return sprintf(buf, "%d\n", !!(data->config4 & CONFIG4_MAXDUTY)); return sprintf(buf, "%d\n", !!(data->config4 & CONFIG4_MAXDUTY));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment