diff options
| author | Alok Chauhan <alokc@codeaurora.org> | 2015-02-16 18:15:14 +0530 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:04:10 -0700 |
| commit | 384511e2a0cb2662e1bb96ec86af55e724b22b10 (patch) | |
| tree | fb279ffddc687e73b770b9271d8d817e68729b1e | |
| parent | 5102def78e9bc1e34b94fe925c46992eefe36e66 (diff) | |
devfreq: devfreq_spdm: Correct Memory usages check in error cases
Correct some of memory free usages check to avoid corruption
later point of time.
Change-Id: Iaeff7bf413157ff324d1678f630de54c22d792a0
Signed-off-by: Alok Chauhan <alokc@codeaurora.org>
| -rw-r--r-- | drivers/devfreq/devfreq_spdm.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/devfreq/devfreq_spdm.c b/drivers/devfreq/devfreq_spdm.c index 2216094c675a..5646f84b5248 100644 --- a/drivers/devfreq/devfreq_spdm.c +++ b/drivers/devfreq/devfreq_spdm.c @@ -202,6 +202,7 @@ static int populate_config_data(struct spdm_data *data, data->config_data.num_ports); if (ret) { devm_kfree(&pdev->dev, data->config_data.ports); + data->config_data.ports = NULL; return ret; } @@ -238,6 +239,7 @@ static int populate_spdm_data(struct spdm_data *data, no_client: no_pdata: devm_kfree(&pdev->dev, data->config_data.ports); + data->config_data.ports = NULL; return ret; } @@ -296,7 +298,7 @@ static int probe(struct platform_device *pdev) devfreq_add_device(&pdev->dev, data->profile, "spdm_bw_hyp", data); if (IS_ERR(data->devfreq)) { ret = PTR_ERR(data->devfreq); - goto no_profile; + goto no_spdm_device; } spdm_init_debugfs(&pdev->dev); @@ -311,6 +313,8 @@ static int probe(struct platform_device *pdev) return 0; +no_spdm_device: + devm_kfree(&pdev->dev, data->profile); no_profile: no_clock: msm_bus_scale_unregister_client(data->bus_scale_client_id); @@ -318,6 +322,7 @@ no_bus_scaling: devm_kfree(&pdev->dev, data->config_data.ports); bad_of: devm_kfree(&pdev->dev, data); + platform_set_drvdata(pdev, NULL); return ret; } @@ -342,6 +347,7 @@ static int remove(struct platform_device *pdev) devm_kfree(&pdev->dev, data->config_data.ports); devm_kfree(&pdev->dev, data); + platform_set_drvdata(pdev, NULL); if (spdm_ipc_log_ctxt) ipc_log_context_destroy(spdm_ipc_log_ctxt); |
