cpufreq: don't allow governor limits to be changed when it is disabled
authorViresh Kumar <viresh.kumar@linaro.org>
Sat, 31 Aug 2013 12:23:40 +0000 (17:53 +0530)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 10 Sep 2013 00:49:45 +0000 (02:49 +0200)
__cpufreq_governor() returns with -EBUSY when governor is already
stopped and we try to stop it again, but when it is stopped we must
not allow calls to CPUFREQ_GOV_LIMITS event as well.

This patch adds this check in __cpufreq_governor().

Reported-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpufreq/cpufreq.c

index 5c75e3147a607ca70a6d880500f9a9b6fb336316..06a2496d2075e80a8db7e6a14e4a3a83e96877c0 100644 (file)
@@ -1692,8 +1692,9 @@ static int __cpufreq_governor(struct cpufreq_policy *policy,
                                                policy->cpu, event);
 
        mutex_lock(&cpufreq_governor_lock);
-       if ((!policy->governor_enabled && (event == CPUFREQ_GOV_STOP)) ||
-           (policy->governor_enabled && (event == CPUFREQ_GOV_START))) {
+       if ((policy->governor_enabled && event == CPUFREQ_GOV_START)
+           || (!policy->governor_enabled
+           && (event == CPUFREQ_GOV_LIMITS || event == CPUFREQ_GOV_STOP))) {
                mutex_unlock(&cpufreq_governor_lock);
                return -EBUSY;
        }