aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-12-30 09:57:11 -0500
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-12-31 15:48:43 -0500
commitcad30467963267509d5b0d7d3c9bd1af3b91e720 (patch)
tree1401116f7b9bce68c4d4c1140b4648c5dcd1919f
parentaa439248ab71bcd2d26a01708dead4dd56616499 (diff)
cpufreq: intel_pstate: Use locking in intel_cpufreq_verify_policy()
Race conditions are possible if intel_cpufreq_verify_policy() is executed in parallel with global limits updates from sysfs, so the invocation of intel_pstate_update_perf_limits() in it should be carried out under intel_pstate_limits_lock. Make that happen. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
-rw-r--r--drivers/cpufreq/intel_pstate.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index dc457abb7dab..f8e514d7fbc4 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -2103,8 +2103,12 @@ static int intel_cpufreq_verify_policy(struct cpufreq_policy *policy)
2103 if (per_cpu_limits) 2103 if (per_cpu_limits)
2104 perf_limits = cpu->perf_limits; 2104 perf_limits = cpu->perf_limits;
2105 2105
2106 mutex_lock(&intel_pstate_limits_lock);
2107
2106 intel_pstate_update_perf_limits(policy, perf_limits); 2108 intel_pstate_update_perf_limits(policy, perf_limits);
2107 2109
2110 mutex_unlock(&intel_pstate_limits_lock);
2111
2108 return 0; 2112 return 0;
2109} 2113}
2110 2114