summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDirk Brandewie <dirk.j.brandewie@intel.com>2014-03-24 18:41:29 +0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2014-03-26 19:39:53 +0400
commitc2294a2f7853e6450361d078b65407bdaa6d1d11 (patch)
treebb4dd6b553bfb750e59c67373ea2907e9830c52d
parent0c5aa405a9437d97e09ec289d4f29bb62e0f01b6 (diff)
downloadlinux-c2294a2f7853e6450361d078b65407bdaa6d1d11.tar.xz
intel_pstate: Use del_timer_sync in intel_pstate_cpu_stop
Ensure that no timer callback is running since we are about to free the timer structure. We cannot guarantee that the call back is called on the CPU where the timer is running. Reported-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com> Reviewed-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r--drivers/cpufreq/intel_pstate.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index bcb9a6d0ae11..099967302bf2 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -778,7 +778,7 @@ static void intel_pstate_stop_cpu(struct cpufreq_policy *policy)
pr_info("intel_pstate CPU %d exiting\n", cpu_num);
- del_timer(&all_cpu_data[cpu_num]->timer);
+ del_timer_sync(&all_cpu_data[cpu_num]->timer);
intel_pstate_set_pstate(cpu, cpu->pstate.min_pstate);
kfree(all_cpu_data[cpu_num]);
all_cpu_data[cpu_num] = NULL;