Browse Source

cpuidle: Check the result of cpuidle_get_driver() against NULL

If the current CPU has no cpuidle driver, drv will be NULL in
cpuidle_driver_ref().  Check if that is the case before trying
to bump up the driver's refcount to prevent the kernel from
crashing.

[rjw: Subject and changelog]
Signed-off-by: Daniel Fu <danifu@nvidia.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Daniel Fu 12 năm trước cách đây
mục cha
commit
3b9c10e980
1 tập tin đã thay đổi với 2 bổ sung1 xóa
  1. 2 1
      drivers/cpuidle/driver.c

+ 2 - 1
drivers/cpuidle/driver.c

@@ -331,7 +331,8 @@ struct cpuidle_driver *cpuidle_driver_ref(void)
 	spin_lock(&cpuidle_driver_lock);
 	spin_lock(&cpuidle_driver_lock);
 
 
 	drv = cpuidle_get_driver();
 	drv = cpuidle_get_driver();
-	drv->refcnt++;
+	if (drv)
+		drv->refcnt++;
 
 
 	spin_unlock(&cpuidle_driver_lock);
 	spin_unlock(&cpuidle_driver_lock);
 	return drv;
 	return drv;