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 <[email protected]>
Reviewed-by: Durgadoss R <[email protected]>
Signed-off-by: Zhang Rui <[email protected]>
This commit is contained in:
Eduardo Valentin 2013-01-02 15:29:42 +00:00 • committed by Zhang Rui
commit 6b2aa51d69

View file

@ -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);