aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSachin Kamat <sachin.kamat@linaro.org>2012-09-27 06:50:38 -0400
committerZhang Rui <rui.zhang@intel.com>2012-09-27 20:23:21 -0400
commitc072fed95c9855a920c114d7fa3351f0f54ea06e (patch)
treeeefe9fd7ae447aea14a9c8c6341c3479d968df2b
parenta4b6fec977020a508ff04b05f0fa01221a4ecf29 (diff)
thermal: Exynos: Fix NULL pointer dereference in exynos_unregister_thermal()
exynos_unregister_thermal() is functional only when 'th_zone' is not NULL (ensured by the NULL checks). However, in the event it is NULL, it gets dereferenced in the for loop. This patch fixes this issue. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
-rw-r--r--drivers/thermal/exynos_thermal.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/thermal/exynos_thermal.c b/drivers/thermal/exynos_thermal.c
index e84acde9e0b..fd03e8581af 100644
--- a/drivers/thermal/exynos_thermal.c
+++ b/drivers/thermal/exynos_thermal.c
@@ -475,11 +475,14 @@ static void exynos_unregister_thermal(void)
475{ 475{
476 int i; 476 int i;
477 477
478 if (th_zone && th_zone->therm_dev) 478 if (!th_zone)
479 return;
480
481 if (th_zone->therm_dev)
479 thermal_zone_device_unregister(th_zone->therm_dev); 482 thermal_zone_device_unregister(th_zone->therm_dev);
480 483
481 for (i = 0; i < th_zone->cool_dev_size; i++) { 484 for (i = 0; i < th_zone->cool_dev_size; i++) {
482 if (th_zone && th_zone->cool_dev[i]) 485 if (th_zone->cool_dev[i])
483 cpufreq_cooling_unregister(th_zone->cool_dev[i]); 486 cpufreq_cooling_unregister(th_zone->cool_dev[i]);
484 } 487 }
485 488