aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/firmware_class.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/base/firmware_class.c')
-rw-r--r--drivers/base/firmware_class.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index ddeb819c8f87..f285f441fab9 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -217,8 +217,10 @@ firmware_data_read(struct kobject *kobj, struct bin_attribute *bin_attr,
217 ret_count = -ENODEV; 217 ret_count = -ENODEV;
218 goto out; 218 goto out;
219 } 219 }
220 if (offset > fw->size) 220 if (offset > fw->size) {
221 return 0; 221 ret_count = 0;
222 goto out;
223 }
222 if (count > fw->size - offset) 224 if (count > fw->size - offset)
223 count = fw->size - offset; 225 count = fw->size - offset;
224 226
@@ -357,7 +359,7 @@ static void fw_dev_release(struct device *dev)
357 kfree(fw_priv->pages); 359 kfree(fw_priv->pages);
358 kfree(fw_priv->fw_id); 360 kfree(fw_priv->fw_id);
359 kfree(fw_priv); 361 kfree(fw_priv);
360 put_device(dev); 362 kfree(dev);
361 363
362 module_put(THIS_MODULE); 364 module_put(THIS_MODULE);
363} 365}
@@ -408,13 +410,11 @@ static int fw_register_device(struct device **dev_p, const char *fw_name,
408 if (retval) { 410 if (retval) {
409 dev_err(device, "%s: device_register failed\n", __func__); 411 dev_err(device, "%s: device_register failed\n", __func__);
410 put_device(f_dev); 412 put_device(f_dev);
411 goto error_kfree_fw_id; 413 return retval;
412 } 414 }
413 *dev_p = f_dev; 415 *dev_p = f_dev;
414 return 0; 416 return 0;
415 417
416error_kfree_fw_id:
417 kfree(fw_priv->fw_id);
418error_kfree: 418error_kfree:
419 kfree(f_dev); 419 kfree(f_dev);
420 kfree(fw_priv); 420 kfree(fw_priv);