summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Hunter <jonathanh@nvidia.com>2016-06-28 11:38:26 +0100
committerThierry Reding <treding@nvidia.com>2016-06-30 12:23:07 +0200
commit61fd284be8be06db1339ca4c9217f5a13b50074f (patch)
treeb9fd610f396fe04a31fec4d33388984f7856f992
parent718a2426e82076e4eddc2a041c8e944c9f9b3e61 (diff)
downloadop-kernel-dev-61fd284be8be06db1339ca4c9217f5a13b50074f.zip
op-kernel-dev-61fd284be8be06db1339ca4c9217f5a13b50074f.tar.gz
soc/tegra: pmc: Ensure mutex is always initialised
The mutex used by the PMC driver may not be initialised if early initialisation of the driver fails. If this does happen, then it could be possible for callers of the public PMC functions to still attempt to acquire the mutex. Fix this by initialising the mutex as soon as possible to ensure it will always be initialised. Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r--drivers/soc/tegra/pmc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c
index ed2b2c83..483d546 100644
--- a/drivers/soc/tegra/pmc.c
+++ b/drivers/soc/tegra/pmc.c
@@ -1504,6 +1504,8 @@ static int __init tegra_pmc_early_init(void)
bool invert;
u32 value;
+ mutex_init(&pmc->powergates_lock);
+
np = of_find_matching_node_and_match(NULL, tegra_pmc_match, &match);
if (!np) {
/*
@@ -1548,8 +1550,6 @@ static int __init tegra_pmc_early_init(void)
return -ENXIO;
}
- mutex_init(&pmc->powergates_lock);
-
if (np) {
pmc->soc = match->data;
OpenPOWER on IntegriCloud