thermal_sys: check get_temp return value
authorMichael Brunner <mibru@gmx.de>
Wed, 26 Aug 2009 21:29:25 +0000 (14:29 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 27 Aug 2009 03:06:52 +0000 (20:06 -0700)
commit0d288162f2afc42b37aab656f4622c076babbca3
tree6dcac3abf329692ead0cd71d63c8ffa3fd88d63f
parent4ab6c08336535f8c8e42cf45d7adeda882eff06e
thermal_sys: check get_temp return value

The return value of the get_temp function is not checked when doing a
thermal zone update.  This may lead to a critical shutdown if get_temp
fails and the content of the temp variable is incorrectly set higher than
the critical trip point.

This has been observed on a system with incorrect ACPI implementation
where the corresponding methods were not serialized and therefore
sometimes triggered ACPI errors (AE_ALREADY_EXISTS).  The following
critical shutdowns indicated a temperature of 2097 C, which was obviously
wrong.

The patch adds a return value check that jumps over all trip point
evaluations printing a warning if get_temp fails.  The trip points are
evaluated again on the next polling interval with successful get_temp
execution.

Signed-off-by: Michael Brunner <mibru@gmx.de>
Acked-by: Zhang Rui <rui.zhang@intel.com>
Cc: Len Brown <lenb@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/thermal/thermal_sys.c