aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEduardo Valentin <eduardo.valentin@ti.com>2013-01-02 10:29:42 -0500
committerZhang Rui <rui.zhang@intel.com>2013-01-17 02:09:22 -0500
commit6b2aa51d698492e8dc0a0ce6ce5b3193ccaec269 (patch)
tree2f34c327e3fb92f4851bb0c1dbcddea2db9670d8
parent923e0b1e8dbe0939d9fc41c226dfc5d53884d8c6 (diff)
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,
1530 if (!ops || !ops->get_temp) 1530 if (!ops || !ops->get_temp)
1531 return ERR_PTR(-EINVAL); 1531 return ERR_PTR(-EINVAL);
1532 1532
1533 if (trips > 0 && !ops->get_trip_type)
1534 return ERR_PTR(-EINVAL);
1535
1533 tz = kzalloc(sizeof(struct thermal_zone_device), GFP_KERNEL); 1536 tz = kzalloc(sizeof(struct thermal_zone_device), GFP_KERNEL);
1534 if (!tz) 1537 if (!tz)
1535 return ERR_PTR(-ENOMEM); 1538 return ERR_PTR(-ENOMEM);