intel_pstate: Use del_timer_sync in intel_pstate_cpu_stop
authorDirk Brandewie <dirk.j.brandewie@intel.com>
Mon, 24 Mar 2014 14:41:29 +0000 (07:41 -0700)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 26 Mar 2014 15:39:53 +0000 (16:39 +0100)
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>
drivers/cpufreq/intel_pstate.c

index bcb9a6d0ae115fbb50ae369296f142a981fa0ceb..099967302bf25939019875846f7819461a4805c2 100644 (file)
@@ -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;