Showing error 1732

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: 323
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 20:24:52 UTC


Source:

293static ssize_t set_temp_##suffix(struct device *dev, struct device_attribute *attr, const char *buf, \
294        size_t count) \
295{ \
296        struct i2c_client *client = to_i2c_client(dev); \
297        struct lm80_data *data = i2c_get_clientdata(client); \
298        long val = simple_strtoul(buf, NULL, 10); \
299 \
300        mutex_lock(&data->update_lock); \
301        data->value = TEMP_LIMIT_TO_REG(val); \
302        lm80_write_value(client, reg, data->value); \
303        mutex_unlock(&data->update_lock); \
304        return count; \
305}
306set_temp(hot_max, temp_hot_max, LM80_REG_TEMP_HOT_MAX);
307set_temp(hot_hyst, temp_hot_hyst, LM80_REG_TEMP_HOT_HYST);
308set_temp(os_max, temp_os_max, LM80_REG_TEMP_OS_MAX);
309set_temp(os_hyst, temp_os_hyst, LM80_REG_TEMP_OS_HYST);
310
311static ssize_t show_alarms(struct device *dev, struct device_attribute *attr,
312                           char *buf)
313{
314        struct lm80_data *data = lm80_update_device(dev);
315        return sprintf(buf, "%u\n", data->alarms);
316}
317
318static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
319                          char *buf)
320{
321        int bitnr = to_sensor_dev_attr(attr)->index;
322        struct lm80_data *data = lm80_update_device(dev);
323        return sprintf(buf, "%u\n", (data->alarms >> bitnr) & 1);
324}
325
326static SENSOR_DEVICE_ATTR(in0_min, S_IWUSR | S_IRUGO,
327                show_in_min, set_in_min, 0);
328static SENSOR_DEVICE_ATTR(in1_min, S_IWUSR | S_IRUGO,
329                show_in_min, set_in_min, 1);
330static SENSOR_DEVICE_ATTR(in2_min, S_IWUSR | S_IRUGO,
331                show_in_min, set_in_min, 2);
332static SENSOR_DEVICE_ATTR(in3_min, S_IWUSR | S_IRUGO,
333                show_in_min, set_in_min, 3);
Show full sources