[RFC PATCH 15/19] cpufreq: remove useless usage of cpufreq_governor_mutex in __cpufreq_governor

From: Juri Lelli
Date: Mon Jan 11 2016 - 12:39:02 EST


Commit 6f1e4efd882e ("cpufreq: Fix timer/workqueue corruption by
protecting reading governor_enabled") made policy->governor_enabled
guarded by cpufreq_governor_mutex in __cpufreq_governor. Now that
holding of policy->rwsem is asserted in __cpufreq_governor,
cpufreq_governor_mutex is overkilling.

Remove such usage. Also, this cleans up semantic of
cpufreq_governor_mutex: it guards cpufreq_governor_list only.

Cc: "Rafael J. Wysocki" <rjw@xxxxxxxxxxxxx>
Cc: Viresh Kumar <viresh.kumar@xxxxxxxxxx>
Signed-off-by: Juri Lelli <juri.lelli@xxxxxxx>
---
drivers/cpufreq/cpufreq.c | 6 ------
1 file changed, 6 deletions(-)

diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index ba452c3..d58a622 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1993,11 +1993,9 @@ static int __cpufreq_governor(struct cpufreq_policy *policy,

pr_debug("%s: for CPU %u, event %u\n", __func__, policy->cpu, event);

- mutex_lock(&cpufreq_governor_mutex);
if ((policy->governor_enabled && event == CPUFREQ_GOV_START)
|| (!policy->governor_enabled
&& (event == CPUFREQ_GOV_LIMITS || event == CPUFREQ_GOV_STOP))) {
- mutex_unlock(&cpufreq_governor_mutex);
return -EBUSY;
}

@@ -2006,8 +2004,6 @@ static int __cpufreq_governor(struct cpufreq_policy *policy,
else if (event == CPUFREQ_GOV_START)
policy->governor_enabled = true;

- mutex_unlock(&cpufreq_governor_mutex);
-
ret = policy->governor->governor(policy, event);

if (!ret) {
@@ -2017,12 +2013,10 @@ static int __cpufreq_governor(struct cpufreq_policy *policy,
policy->governor->initialized--;
} else {
/* Restore original values */
- mutex_lock(&cpufreq_governor_mutex);
if (event == CPUFREQ_GOV_STOP)
policy->governor_enabled = true;
else if (event == CPUFREQ_GOV_START)
policy->governor_enabled = false;
- mutex_unlock(&cpufreq_governor_mutex);
}

if (((event == CPUFREQ_GOV_POLICY_INIT) && ret) ||
--
2.2.2