Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b3329a33 authored by Shweta Gulati's avatar Shweta Gulati Committed by Kevin Hilman
Browse files

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: default avatarShweta Gulati <shweta.gulati@ti.com>
Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
parent 865212ab
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -282,6 +282,7 @@ static int sr_late_init(struct omap_sr *sr_info)
		dev_err(&sr_info->pdev->dev, "%s: ERROR in registering"
			"interrupt handler. Smartreflex will"
			"not function as desired\n", __func__);
		kfree(name);
		kfree(sr_info);
		return ret;
}
@@ -879,7 +880,7 @@ static int __init omap_sr_probe(struct platform_device *pdev)
		ret = sr_late_init(sr_info);
		if (ret) {
			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.
	 */
	vdd_dbg_dir = omap_voltage_get_dbgdir(sr_info->voltdm);
	if (!vdd_dbg_dir)
		return -EINVAL;
	if (!vdd_dbg_dir) {
		ret = -EINVAL;
		goto err_release_region;
	}

	dbg_dir = debugfs_create_dir("smartreflex", vdd_dbg_dir);
	if (IS_ERR(dbg_dir)) {
		dev_err(&pdev->dev, "%s: Unable to create debugfs directory\n",
			__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,
@@ -913,7 +917,8 @@ static int __init omap_sr_probe(struct platform_device *pdev)
	if (IS_ERR(nvalue_dir)) {
		dev_err(&pdev->dev, "%s: Unable to create debugfs directory"
			"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);
@@ -922,7 +927,8 @@ static int __init omap_sr_probe(struct platform_device *pdev)
			" corresponding vdd vdd_%s. Cannot create debugfs"
			"entries for n-values\n",
			__func__, sr_info->voltdm->name);
		return -ENODATA;
		ret = -ENODATA;
		goto err_release_region;
	}

	for (i = 0; i < sr_info->nvalue_count; i++) {