summaryrefslogtreecommitdiffstats
path: root/drivers/cpuidle
diff options
context:
space:
mode:
authorLen Brown2010-05-22 22:34:10 +0200
committerLen Brown2010-05-27 19:04:04 +0200
commitc0d64cb031c21f163a0ec15cf10844bcf0ceedcf (patch)
treece65dc6b8cbda91e8c1f1c69753265618e8d9ae6 /drivers/cpuidle
parentcpuidle: fail to register if !CONFIG_CPU_IDLE (diff)
downloadkernel-qcow2-linux-c0d64cb031c21f163a0ec15cf10844bcf0ceedcf.tar.gz
kernel-qcow2-linux-c0d64cb031c21f163a0ec15cf10844bcf0ceedcf.tar.xz
kernel-qcow2-linux-c0d64cb031c21f163a0ec15cf10844bcf0ceedcf.zip
cpuidle: add cpuidle_unregister_driver() error check
Assure that cpuidle_unregister_driver() will not clobber the registered driver if unregistered by somebody else. Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/cpuidle')
-rw-r--r--drivers/cpuidle/driver.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c
index 2257004fe33d..826b5c0aa12b 100644
--- a/drivers/cpuidle/driver.c
+++ b/drivers/cpuidle/driver.c
@@ -45,8 +45,11 @@ EXPORT_SYMBOL_GPL(cpuidle_register_driver);
*/
void cpuidle_unregister_driver(struct cpuidle_driver *drv)
{
- if (!drv)
+ if (drv != cpuidle_curr_driver) {
+ WARN(1, "invalid cpuidle_unregister_driver(%s)\n",
+ drv->name);
return;
+ }
spin_lock(&cpuidle_driver_lock);
cpuidle_curr_driver = NULL;