mirror of
https://github.com/S3NEO/android_kernel_samsung_msm8226.git
synced 2024-11-07 03:47:13 +00:00
OMAP2+: PM: SmartReflex: fix memory leaks in Smartreflex driver
This Patch frees all the dynamically allocated memory which couldn't have been released in some error hitting cases. Signed-off-by: Shweta Gulati <shweta.gulati@ti.com> Signed-off-by: Kevin Hilman <khilman@ti.com>
This commit is contained in:
parent
865212abb5
commit
b3329a33b5
1 changed files with 12 additions and 6 deletions
|
@ -282,6 +282,7 @@ error:
|
||||||
dev_err(&sr_info->pdev->dev, "%s: ERROR in registering"
|
dev_err(&sr_info->pdev->dev, "%s: ERROR in registering"
|
||||||
"interrupt handler. Smartreflex will"
|
"interrupt handler. Smartreflex will"
|
||||||
"not function as desired\n", __func__);
|
"not function as desired\n", __func__);
|
||||||
|
kfree(name);
|
||||||
kfree(sr_info);
|
kfree(sr_info);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -879,7 +880,7 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
||||||
ret = sr_late_init(sr_info);
|
ret = sr_late_init(sr_info);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_warning("%s: Error in SR late init\n", __func__);
|
pr_warning("%s: Error in SR late init\n", __func__);
|
||||||
return ret;
|
goto err_release_region;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -890,14 +891,17 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
||||||
* not try to create rest of the debugfs entries.
|
* not try to create rest of the debugfs entries.
|
||||||
*/
|
*/
|
||||||
vdd_dbg_dir = omap_voltage_get_dbgdir(sr_info->voltdm);
|
vdd_dbg_dir = omap_voltage_get_dbgdir(sr_info->voltdm);
|
||||||
if (!vdd_dbg_dir)
|
if (!vdd_dbg_dir) {
|
||||||
return -EINVAL;
|
ret = -EINVAL;
|
||||||
|
goto err_release_region;
|
||||||
|
}
|
||||||
|
|
||||||
dbg_dir = debugfs_create_dir("smartreflex", vdd_dbg_dir);
|
dbg_dir = debugfs_create_dir("smartreflex", vdd_dbg_dir);
|
||||||
if (IS_ERR(dbg_dir)) {
|
if (IS_ERR(dbg_dir)) {
|
||||||
dev_err(&pdev->dev, "%s: Unable to create debugfs directory\n",
|
dev_err(&pdev->dev, "%s: Unable to create debugfs directory\n",
|
||||||
__func__);
|
__func__);
|
||||||
return PTR_ERR(dbg_dir);
|
ret = PTR_ERR(dbg_dir);
|
||||||
|
goto err_release_region;
|
||||||
}
|
}
|
||||||
|
|
||||||
(void) debugfs_create_file("autocomp", S_IRUGO | S_IWUSR, dbg_dir,
|
(void) debugfs_create_file("autocomp", S_IRUGO | S_IWUSR, dbg_dir,
|
||||||
|
@ -913,7 +917,8 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
||||||
if (IS_ERR(nvalue_dir)) {
|
if (IS_ERR(nvalue_dir)) {
|
||||||
dev_err(&pdev->dev, "%s: Unable to create debugfs directory"
|
dev_err(&pdev->dev, "%s: Unable to create debugfs directory"
|
||||||
"for n-values\n", __func__);
|
"for n-values\n", __func__);
|
||||||
return PTR_ERR(nvalue_dir);
|
ret = PTR_ERR(nvalue_dir);
|
||||||
|
goto err_release_region;
|
||||||
}
|
}
|
||||||
|
|
||||||
omap_voltage_get_volttable(sr_info->voltdm, &volt_data);
|
omap_voltage_get_volttable(sr_info->voltdm, &volt_data);
|
||||||
|
@ -922,7 +927,8 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
||||||
" corresponding vdd vdd_%s. Cannot create debugfs"
|
" corresponding vdd vdd_%s. Cannot create debugfs"
|
||||||
"entries for n-values\n",
|
"entries for n-values\n",
|
||||||
__func__, sr_info->voltdm->name);
|
__func__, sr_info->voltdm->name);
|
||||||
return -ENODATA;
|
ret = -ENODATA;
|
||||||
|
goto err_release_region;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < sr_info->nvalue_count; i++) {
|
for (i = 0; i < sr_info->nvalue_count; i++) {
|
||||||
|
|
Loading…
Reference in a new issue