From: Jean Delvare <khali@linux-fr.org>
To: lm-sensors@vger.kernel.org
Subject: Re: [lm-sensors] [PATCH 2/3] hwmon: (fam15h_power) Fix unintentional integer overflow
Date: Sat, 07 Jul 2012 15:03:09 +0000 [thread overview]
Message-ID: <20120707170309.04ca8332@endymion.delvare> (raw)
In-Reply-To: <1340287015-14008-2-git-send-email-linux@roeck-us.net>
Hi Guenter,
Adding Andreas to Cc...
On Thu, 21 Jun 2012 06:56:54 -0700, Guenter Roeck wrote:
> Expression with two unsigned integer variables is calculated as unsigned integer
> before it is converted to u64. This may result in an integer overflow.
> Fix by typecasting the left operand to u64 before performing the left shift.
>
> This patch addresses Coverity #402320: Unintentional integer overflow.
>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> ---
> drivers/hwmon/fam15h_power.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/hwmon/fam15h_power.c b/drivers/hwmon/fam15h_power.c
> index 6b13f1a..2764b78 100644
> --- a/drivers/hwmon/fam15h_power.c
> +++ b/drivers/hwmon/fam15h_power.c
> @@ -67,7 +67,8 @@ static ssize_t show_power(struct device *dev,
> REG_TDP_LIMIT3, &val);
>
> tdp_limit = val >> 16;
> - curr_pwr_watts = (tdp_limit + data->base_tdp) << running_avg_range;
> + curr_pwr_watts = ((u64)(tdp_limit +
> + data->base_tdp)) << running_avg_range;
Even then, "tdp_limit + data->base_tdp" could overflow already, on
32-bit architectures [1]. So I think what you really want is:
curr_pwr_watts = ((u64)tdp_limit + data->base_tdp) << running_avg_range;
[1] I'm not quite sure why one would run a 32-bit Linux on an AMD
Family 15h machine, but you never know...
> curr_pwr_watts -= running_avg_capture;
> curr_pwr_watts *= data->tdp_to_watts;
And BTW, this might be good to push to stable trees, as we've had real
problems with overflows in this driver in the past. I don't know the
realistic values for tdp_limit, base_tdp and running_avg_range so I'm
not sure.
--
Jean Delvare
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
next prev parent reply other threads:[~2012-07-07 15:03 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-21 13:56 [lm-sensors] [PATCH 2/3] hwmon: (fam15h_power) Fix unintentional integer overflow Guenter Roeck
2012-07-07 15:03 ` Jean Delvare [this message]
2012-07-08 4:57 ` Guenter Roeck
2012-07-08 7:52 ` Jean Delvare
2012-07-09 10:28 ` Andreas Herrmann
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=20120707170309.04ca8332@endymion.delvare \
--to=khali@linux-fr.org \
--cc=lm-sensors@vger.kernel.org \
/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.