lkml.org 
[lkml]   [2012]   [Sep]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] Thermal: Fix bug on generic thermal framework.
When system fails to bind cooling devices to thermal zone device during
registering thermal zone device, it leaves registering without canceling
delayed work. It probably makes panic if polling rate is not enough to release
that work from workqueue. So it is better to ignore initialization of polling
work to prevent that unexpected state.

Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com>
---
drivers/thermal/thermal_sys.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c
index 2ab31e4..744e69d 100644
--- a/drivers/thermal/thermal_sys.c
+++ b/drivers/thermal/thermal_sys.c
@@ -1351,12 +1351,14 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
}
mutex_unlock(&thermal_list_lock);

+ if (result)
+ goto unregister;
+
INIT_DELAYED_WORK(&(tz->poll_queue), thermal_zone_device_check);

thermal_zone_device_update(tz);

- if (!result)
- return tz;
+ return tz;

unregister:
release_idr(&thermal_tz_idr, &thermal_idr_lock, tz->id);
--
1.7.4.1


\
 
 \ /
  Last update: 2012-09-24 04:21    [W:0.103 / U:0.248 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site