Sfoglia il codice sorgente

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>
Len Brown 15 anni fa
parent
commit
c0d64cb031
1 ha cambiato i file con 4 aggiunte e 1 eliminazioni
  1. 4 1
      drivers/cpuidle/driver.c

+ 4 - 1
drivers/cpuidle/driver.c

@@ -45,8 +45,11 @@ EXPORT_SYMBOL_GPL(cpuidle_register_driver);
  */
  */
 void cpuidle_unregister_driver(struct cpuidle_driver *drv)
 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;
 		return;
+	}
 
 
 	spin_lock(&cpuidle_driver_lock);
 	spin_lock(&cpuidle_driver_lock);
 	cpuidle_curr_driver = NULL;
 	cpuidle_curr_driver = NULL;