From: Guenter Roeck <linux@roeck-us.net>
To: "Pali Rohár" <pali.rohar@gmail.com>,
"Arnd Bergmann" <arnd@arndb.de>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
Cc: Steven Honeyman <stevenhoneyman@gmail.com>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] i8k: Fix temperature bug handling in i8k_get_temp()
Date: Sun, 30 Nov 2014 01:00:00 -0800 [thread overview]
Message-ID: <547ADC90.8000507@roeck-us.net> (raw)
In-Reply-To: <1416322614-10308-1-git-send-email-pali.rohar@gmail.com>
On 11/18/2014 06:56 AM, Pali Rohár wrote:
> Static array prev[] was incorrectly initialized. It should be initialized to
> some "invalid" temperature value (above I8K_MAX_TEMP).
>
> Next, function should store "invalid" value to prev[] (above I8K_MAX_TEMP),
> not valid (= I8K_MAX_TEMP) because whole temperature bug handling will not
> work.
>
> And last part, to not break existing detection of temperature sensors, register
> them also if i8k report too high temperature (above I8K_MAX_TEMP). This is
> needed because some sensors are sometimes turned off (e.g sensor on GPU which
> can be turned off/on) and in this case SMM report too high value.
>
> To prevent reporting "invalid" values to userspace, return -EINVAL. In this case
> sensors which are currently turned off (e.g optimus/powerexpress/enduro gpu)
> are reported as "N/A" by lm-sensors package.
>
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> ---
> drivers/char/i8k.c | 16 ++++++++++------
> 1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/char/i8k.c b/drivers/char/i8k.c
> index 7272b08..e34a019 100644
> --- a/drivers/char/i8k.c
> +++ b/drivers/char/i8k.c
> @@ -298,7 +298,7 @@ static int i8k_get_temp(int sensor)
> int temp;
>
> #ifdef I8K_TEMPERATURE_BUG
> - static int prev[4];
> + static int prev[4] = { I8K_MAX_TEMP+1, I8K_MAX_TEMP+1, I8K_MAX_TEMP+1, I8K_MAX_TEMP+1 };
> #endif
> regs.ebx = sensor & 0xff;
> rc = i8k_smm(®s);
> @@ -317,10 +317,12 @@ static int i8k_get_temp(int sensor)
> */
> if (temp > I8K_MAX_TEMP) {
> temp = prev[sensor];
> - prev[sensor] = I8K_MAX_TEMP;
> + prev[sensor] = I8K_MAX_TEMP+1;
> } else {
> prev[sensor] = temp;
> }
> + if (temp > I8K_MAX_TEMP)
> + return -ERANGE;
Can we return -ENODATA in this case ? I think that would be more appropriate.
> #endif
>
> return temp;
> @@ -499,6 +501,8 @@ static ssize_t i8k_hwmon_show_temp(struct device *dev,
> int temp;
>
> temp = i8k_get_temp(index);
> + if (temp == -ERANGE)
> + return -EINVAL;
and can we also return -ENODATA to user space ?
This would make the code a bit cleaner.
Thanks,
Guenter
next prev parent reply other threads:[~2014-11-30 9:00 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-19 14:46 [PATCH] i8k: Ignore temperature sensors which report invalid values Pali Rohár
2014-10-19 15:13 ` Guenter Roeck
2014-10-20 16:46 ` Pali Rohár
2014-10-21 4:27 ` Guenter Roeck
2014-10-22 12:29 ` Pali Rohár
2014-10-22 16:19 ` Guenter Roeck
2014-10-22 16:35 ` Pali Rohár
2014-10-22 17:10 ` Guenter Roeck
2014-10-23 10:37 ` Pali Rohár
2014-10-23 16:45 ` Guenter Roeck
2014-11-17 8:35 ` Pali Rohár
2014-11-18 5:56 ` Guenter Roeck
2014-11-18 14:46 ` Pali Rohár
2014-11-18 14:56 ` [PATCH] i8k: Fix temperature bug handling in i8k_get_temp() Pali Rohár
2014-11-30 0:12 ` Guenter Roeck
2014-11-30 14:44 ` Pali Rohár
2014-11-30 9:00 ` Guenter Roeck [this message]
2014-11-30 14:48 ` Pali Rohár
2014-11-30 15:56 ` Guenter Roeck
2014-11-30 16:00 ` Pali Rohár
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=547ADC90.8000507@roeck-us.net \
--to=linux@roeck-us.net \
--cc=arnd@arndb.de \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pali.rohar@gmail.com \
--cc=stevenhoneyman@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.