summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlok Chauhan <alokc@codeaurora.org>2015-02-16 18:15:14 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:04:10 -0700
commit384511e2a0cb2662e1bb96ec86af55e724b22b10 (patch)
treefb279ffddc687e73b770b9271d8d817e68729b1e
parent5102def78e9bc1e34b94fe925c46992eefe36e66 (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.c8
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);