From: Eduardo Valentin Date: Wed, 2 Jan 2013 15:29:42 +0000 (+0000) Subject: thermal: check for invalid trip setup when registering thermal device X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=6b2aa51d698492e8dc0a0ce6ce5b3193ccaec269;p=deliverable%2Flinux.git 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 Reviewed-by: Durgadoss R Signed-off-by: Zhang Rui --- 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);