Commit ccc5c306957bb7fbaef61de249bac4b0f09f2336
Committed by
Greg Kroah-Hartman
1 parent
311ce2efb1
Exists in
master
and in
20 other branches
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 |