cpuidle: move driver checking within the lock section
[firefly-linux-kernel-4.4.55.git] / drivers / cpuidle / driver.c
index 39ba8e181e96a98885e1b910a87e5cba2beed37b..3e5907569233c4792219166a646dfda00769f5cc 100644 (file)
@@ -85,17 +85,9 @@ EXPORT_SYMBOL_GPL(cpuidle_get_driver);
  */
 void cpuidle_unregister_driver(struct cpuidle_driver *drv)
 {
-       if (drv != cpuidle_curr_driver) {
-               WARN(1, "invalid cpuidle_unregister_driver(%s)\n",
-                       drv->name);
-               return;
-       }
-
        spin_lock(&cpuidle_driver_lock);
-
-       if (!WARN_ON(drv->refcnt > 0))
+       if (drv == cpuidle_curr_driver && !WARN_ON(drv->refcnt > 0))
                cpuidle_curr_driver = NULL;
-
        spin_unlock(&cpuidle_driver_lock);
 }
 EXPORT_SYMBOL_GPL(cpuidle_unregister_driver);