cpufreq: interactive: fix race on timer restart on governor start
authorTodd Poynor <toddpoynor@google.com>
Thu, 20 Dec 2012 23:51:00 +0000 (15:51 -0800)
committerJohn Stultz <john.stultz@linaro.org>
Tue, 16 Feb 2016 21:52:50 +0000 (13:52 -0800)
commit1dc7486fd81019314463d5077d8b4d13c41f3b34
treea4e32612ce288ec368f1e84fba2c8569aef6b9a6
parent583695f13bbcc33f356a3fe598c30b10bd0c5c48
cpufreq: interactive: fix race on timer restart on governor start

Starting the governor, or restarting on a hotplugged-in CPU, can race
with the timer start in idle, triggering a BUG on timer already pending.
Start the timer before setting the enable flag, and use enable_sem to
protect the sequence (and ensure correct order of the update to the
enable flag).  Delete any existing timer for safety.

Change-Id: Ife77cf9fe099e8fd8543224cbf148c6722c2ffb0
Reported-by: Francisco Franco <francisco.franco@cloudcar.com>
Signed-off-by: Todd Poynor <toddpoynor@google.com>
drivers/cpufreq/cpufreq_interactive.c