Skip to content

Commit

Permalink
hwmon: (adt7475) Potential error pointer dereferences
Browse files Browse the repository at this point in the history
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: Dan Carpenter <[email protected]>
Reviewed-by: Tokunori Ikegami <[email protected]>
Signed-off-by: Guenter Roeck <[email protected]>
  • Loading branch information
Dan Carpenter authored and groeck committed Aug 27, 2018
1 parent 3ad8670 commit 9d19371
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions drivers/hwmon/adt7475.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
int i = clamp_val(data->range[sattr->index] & 0xf, 0,
ARRAY_SIZE(pwmfreq_table) - 1);
int idx;

if (IS_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,
Expand Down Expand Up @@ -1004,6 +1005,10 @@ static ssize_t pwm_use_point2_pwm_at_crit_show(struct device *dev,
char *buf)
{
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));
}

Expand Down

0 comments on commit 9d19371

Please sign in to comment.