Commit ccc5c306957bb7fbaef61de249bac4b0f09f2336

Authored by Rudolf Marek
Committed by Greg Kroah-Hartman
1 parent 311ce2efb1

w83l785ts: Fix unchecked return status

w83l785ts: Fix unchecked return status

Fix the w83l785ts driver. Add error checking to device_create_file
and also care to destroy the files upon exit.

Signed-off-by: Rudolf Marek <r.marek@assembler.cz>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

Showing 1 changed file with 20 additions and 8 deletions Side-by-side Diff

drivers/hwmon/w83l785ts.c
... ... @@ -236,21 +236,30 @@
236 236 * Nothing yet, assume it is already started.
237 237 */
238 238  
  239 + err = device_create_file(&new_client->dev,
  240 + &sensor_dev_attr_temp1_input.dev_attr);
  241 + if (err)
  242 + goto exit_remove;
  243 +
  244 + err = device_create_file(&new_client->dev,
  245 + &sensor_dev_attr_temp1_max.dev_attr);
  246 + if (err)
  247 + goto exit_remove;
  248 +
239 249 /* Register sysfs hooks */
240 250 data->class_dev = hwmon_device_register(&new_client->dev);
241 251 if (IS_ERR(data->class_dev)) {
242 252 err = PTR_ERR(data->class_dev);
243   - goto exit_detach;
  253 + goto exit_remove;
244 254 }
245 255  
246   - device_create_file(&new_client->dev,
247   - &sensor_dev_attr_temp1_input.dev_attr);
248   - device_create_file(&new_client->dev,
249   - &sensor_dev_attr_temp1_max.dev_attr);
250   -
251 256 return 0;
252 257  
253   -exit_detach:
  258 +exit_remove:
  259 + device_remove_file(&new_client->dev,
  260 + &sensor_dev_attr_temp1_input.dev_attr);
  261 + device_remove_file(&new_client->dev,
  262 + &sensor_dev_attr_temp1_max.dev_attr);
254 263 i2c_detach_client(new_client);
255 264 exit_free:
256 265 kfree(data);
... ... @@ -264,7 +273,10 @@
264 273 int err;
265 274  
266 275 hwmon_device_unregister(data->class_dev);
267   -
  276 + device_remove_file(&client->dev,
  277 + &sensor_dev_attr_temp1_input.dev_attr);
  278 + device_remove_file(&client->dev,
  279 + &sensor_dev_attr_temp1_max.dev_attr);
268 280 if ((err = i2c_detach_client(client)))
269 281 return err;
270 282