summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEduardo Valentin <eduardo.valentin@ti.com>2013-01-02 15:29:42 +0000
committerZhang Rui <rui.zhang@intel.com>2013-01-17 15:09:22 +0800
commit6b2aa51d698492e8dc0a0ce6ce5b3193ccaec269 (patch)
tree2f34c327e3fb92f4851bb0c1dbcddea2db9670d8
parent923e0b1e8dbe0939d9fc41c226dfc5d53884d8c6 (diff)
downloadlinux-6b2aa51d698492e8dc0a0ce6ce5b3193ccaec269.tar.bz2
thermal: check for invalid trip setup when registering thermal device
This patch adds an extra check in the data structure while registering a thermal device. The check is to avoid registering zones with a number of trips greater than zero, but with no .get_trip_temp nor .get_trip_type callbacks. Receiving such data structure may end in wrong data access. Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com> Reviewed-by: Durgadoss R <durgadoss.r@intel.com> Signed-off-by: Zhang Rui <rui.zhang@intel.com>
-rw-r--r--drivers/thermal/thermal_sys.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c
index fba27c36d707..0a1bf6b032ea 100644
--- a/drivers/thermal/thermal_sys.c
+++ b/drivers/thermal/thermal_sys.c
@@ -1530,6 +1530,9 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
if (!ops || !ops->get_temp)
return ERR_PTR(-EINVAL);
+ if (trips > 0 && !ops->get_trip_type)
+ return ERR_PTR(-EINVAL);
+
tz = kzalloc(sizeof(struct thermal_zone_device), GFP_KERNEL);
if (!tz)
return ERR_PTR(-ENOMEM);