diff options
author | Amit Kucheria <amit.kucheria@linaro.org> | 2019-07-11 22:31:58 +0200 |
---|---|---|
committer | Zhang Rui <rui.zhang@intel.com> | 2019-09-24 03:56:08 +0200 |
commit | 67eed44b8a8ae7ca1a1a77c64d2c4815f00e361b (patch) | |
tree | 64a5983f4c969f3ea40f8da8296d5ffa482c8625 /drivers/thermal | |
parent | thermal: Fix use-after-free when unregistering thermal zone device (diff) | |
download | linux-67eed44b8a8ae7ca1a1a77c64d2c4815f00e361b.tar.xz linux-67eed44b8a8ae7ca1a1a77c64d2c4815f00e361b.zip |
thermal: Add some error messages
When registering a thermal zone device, we currently return -EINVAL in
four cases. This makes it a little hard to debug the real cause of the
failure.
Print some error messages to make it easier for developer to figure out
what happened.
Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Diffstat (limited to 'drivers/thermal')
-rw-r--r-- | drivers/thermal/thermal_core.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index 892f3548ad6d..d4481cc8958f 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -1245,17 +1245,26 @@ thermal_zone_device_register(const char *type, int trips, int mask, int count; struct thermal_governor *governor; - if (!type || strlen(type) == 0) + if (!type || strlen(type) == 0) { + pr_err("Error: No thermal zone type defined\n"); return ERR_PTR(-EINVAL); + } - if (type && strlen(type) >= THERMAL_NAME_LENGTH) + if (type && strlen(type) >= THERMAL_NAME_LENGTH) { + pr_err("Error: Thermal zone name (%s) too long, should be under %d chars\n", + type, THERMAL_NAME_LENGTH); return ERR_PTR(-EINVAL); + } - if (trips > THERMAL_MAX_TRIPS || trips < 0 || mask >> trips) + if (trips > THERMAL_MAX_TRIPS || trips < 0 || mask >> trips) { + pr_err("Error: Incorrect number of thermal trips\n"); return ERR_PTR(-EINVAL); + } - if (!ops) + if (!ops) { + pr_err("Error: Thermal zone device ops not defined\n"); return ERR_PTR(-EINVAL); + } if (trips > 0 && (!ops->get_trip_type || !ops->get_trip_temp)) return ERR_PTR(-EINVAL); |