The temperature registers in the applesmc hardware are signed. It's likely that a negative value is invalid, so trigger on that and return an error rather than an erroneous value. Signed-off-by: Matthew Garrett <mjg@xxxxxxxxxx> --- drivers/hwmon/applesmc.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c index 62e2493..4540bb1 100644 --- a/drivers/hwmon/applesmc.c +++ b/drivers/hwmon/applesmc.c @@ -781,6 +781,10 @@ static ssize_t applesmc_show_temperature(struct device *dev, return ret; if (entry->len == 2) { + if (buffer[0] >= 0x80) { + /* The two byte format is signed - ignore negative */ + return -EINVAL; + } temp = buffer[0] * 1000; temp += (buffer[1] >> 6) * 250; } else { -- 1.7.6 _______________________________________________ lm-sensors mailing list lm-sensors@xxxxxxxxxxxxxx http://lists.lm-sensors.org/mailman/listinfo/lm-sensors