summaryrefslogtreecommitdiff
path: root/drivers/cpuidle
diff options
context:
space:
mode:
authorDaniel Fu <danifu@nvidia.com>2013-08-30 19:48:22 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-04-14 06:42:15 -0700
commit6ae69a801bb987433282fc6c8c18fe60c1dae6b4 (patch)
tree2c63e207dcc2d478c3e15a7a3a40eafa6da27b0a /drivers/cpuidle
parent3246a0352e3d58380b9386570f1db1faf7edf8a8 (diff)
downloadlinux-3.10-6ae69a801bb987433282fc6c8c18fe60c1dae6b4.tar.gz
linux-3.10-6ae69a801bb987433282fc6c8c18fe60c1dae6b4.tar.bz2
linux-3.10-6ae69a801bb987433282fc6c8c18fe60c1dae6b4.zip
cpuidle: Check the result of cpuidle_get_driver() against NULL
commit 3b9c10e98021e1f92e6f8c7ce1778b86ba68db10 upstream. 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> Cc: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/cpuidle')
-rw-r--r--drivers/cpuidle/driver.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c
index 8dfaaae9444..2253271b3fa 100644
--- a/drivers/cpuidle/driver.c
+++ b/drivers/cpuidle/driver.c
@@ -251,7 +251,8 @@ struct cpuidle_driver *cpuidle_driver_ref(void)
spin_lock(&cpuidle_driver_lock);
drv = cpuidle_get_driver();
- drv->refcnt++;
+ if (drv)
+ drv->refcnt++;
spin_unlock(&cpuidle_driver_lock);
return drv;