diff options
author | Guenter Roeck <linux@roeck-us.net> | 2020-04-09 06:37:30 +0300 |
---|---|---|
committer | Guenter Roeck <linux@roeck-us.net> | 2020-04-13 01:12:51 +0300 |
commit | ed08ebb7124e90a99420bb913d602907d377d03d (patch) | |
tree | 4bec5d786d61e6992f5dd8375ae89dcb4f67b868 | |
parent | 6bdf8f3efe867c5893e27431a555e41f54ed7f9a (diff) | |
download | linux-ed08ebb7124e90a99420bb913d602907d377d03d.tar.xz |
hwmon: (drivetemp) Return -ENODATA for invalid temperatures
Holger Hoffstätte observed that Samsung 850 Pro may return invalid
temperatures for a short period of time after resume. Return -ENODATA
to userspace if this is observed.
Fixes: 5b46903d8bf3 ("hwmon: Driver for disk and solid state drives with temperature sensors")
Reported-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Cc: Holger Hoffstätte <holger@applied-asynchrony.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-rw-r--r-- | drivers/hwmon/drivetemp.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/hwmon/drivetemp.c b/drivers/hwmon/drivetemp.c index 370d0c74eb01..9179460c2d9d 100644 --- a/drivers/hwmon/drivetemp.c +++ b/drivers/hwmon/drivetemp.c @@ -264,12 +264,18 @@ static int drivetemp_get_scttemp(struct drivetemp_data *st, u32 attr, long *val) return err; switch (attr) { case hwmon_temp_input: + if (!temp_is_valid(buf[SCT_STATUS_TEMP])) + return -ENODATA; *val = temp_from_sct(buf[SCT_STATUS_TEMP]); break; case hwmon_temp_lowest: + if (!temp_is_valid(buf[SCT_STATUS_TEMP_LOWEST])) + return -ENODATA; *val = temp_from_sct(buf[SCT_STATUS_TEMP_LOWEST]); break; case hwmon_temp_highest: + if (!temp_is_valid(buf[SCT_STATUS_TEMP_HIGHEST])) + return -ENODATA; *val = temp_from_sct(buf[SCT_STATUS_TEMP_HIGHEST]); break; default: |