Showing error 1725

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: drivers/hwmon/lm80.c
Line in file: 215
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 20:24:52 UTC


Source:

185        int nr = to_sensor_dev_attr(attr)->index; \
186        struct i2c_client *client = to_i2c_client(dev); \
187        struct lm80_data *data = i2c_get_clientdata(client); \
188        long val = simple_strtol(buf, NULL, 10); \
189 \
190        mutex_lock(&data->update_lock);\
191        data->value[nr] = IN_TO_REG(val); \
192        lm80_write_value(client, reg(nr), data->value[nr]); \
193        mutex_unlock(&data->update_lock);\
194        return count; \
195}
196set_in(min, in_min, LM80_REG_IN_MIN)
197set_in(max, in_max, LM80_REG_IN_MAX)
198
199#define show_fan(suffix, value) \
200static ssize_t show_fan_##suffix(struct device *dev, struct device_attribute *attr, char *buf) \
201{ \
202        int nr = to_sensor_dev_attr(attr)->index; \
203        struct lm80_data *data = lm80_update_device(dev); \
204        return sprintf(buf, "%d\n", FAN_FROM_REG(data->value[nr], \
205                       DIV_FROM_REG(data->fan_div[nr]))); \
206}
207show_fan(min, fan_min)
208show_fan(input, fan)
209
210static ssize_t show_fan_div(struct device *dev, struct device_attribute *attr,
211        char *buf)
212{
213        int nr = to_sensor_dev_attr(attr)->index;
214        struct lm80_data *data = lm80_update_device(dev);
215        return sprintf(buf, "%d\n", DIV_FROM_REG(data->fan_div[nr]));
216}
217
218static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
219        const char *buf, size_t count)
220{
221        int nr = to_sensor_dev_attr(attr)->index;
222        struct i2c_client *client = to_i2c_client(dev);
223        struct lm80_data *data = i2c_get_clientdata(client);
224        long val = simple_strtoul(buf, NULL, 10);
225
Show full sources