OSDN Git Service

thermal: check for invalid trip setup when registering thermal device
authorEduardo Valentin <eduardo.valentin@ti.com>
Wed, 2 Jan 2013 15:29:42 +0000 (15:29 +0000)
committerZhang Rui <rui.zhang@intel.com>
Thu, 17 Jan 2013 07:09:22 +0000 (15:09 +0800)
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>
drivers/thermal/thermal_sys.c

index fba27c3..0a1bf6b 100644 (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);