Assure that cpuidle_unregister_driver() will not clobber the registered driver if unregistered by somebody else.
Unified · Split
| @@ -45,8 +45,11 @@ EXPORT_SYMBOL_GPL(cpuidle_register_driver); · 44 unmodified lines | ||
| 45 | 45 | */ |
| 46 | 46 | void cpuidle_unregister_driver(struct cpuidle_driver *drv) |
| 47 | 47 | { |
| 48 | − if (!drv) | |
| 48 | + if (drv != cpuidle_curr_driver) { | |
| 49 | + WARN(1, "invalid cpuidle_unregister_driver(%s)\n", | |
| 50 | + drv->name); | |
| 49 | 51 | return; |
| 52 | + } | |
| 50 | 53 | |
| 51 | 54 | spin_lock(&cpuidle_driver_lock); |
| 52 | 55 | cpuidle_curr_driver = NULL; |