From: tip-bot for Chuanhua Lei <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: rajvi.jingar@intel.com, peterz@infradead.org,
linux-kernel@vger.kernel.org, hpa@zytor.com,
douly.fnst@cn.fujitsu.com, tglx@linutronix.de,
chuanhua.lei@linux.intel.com, mingo@kernel.org,
len.brown@intel.com, pasha.tatashin@microsoft.com
Subject: [tip:x86/urgent] x86/tsc: Prevent result truncation on 32bit
Date: Thu, 6 Sep 2018 05:25:01 -0700 [thread overview]
Message-ID: <tip-17f6bac2249356c795339e03a0742cd79be3cab8@git.kernel.org> (raw)
In-Reply-To: <1536228203-18701-1-git-send-email-chuanhua.lei@linux.intel.com>
Commit-ID: 17f6bac2249356c795339e03a0742cd79be3cab8
Gitweb: https://git.kernel.org/tip/17f6bac2249356c795339e03a0742cd79be3cab8
Author: Chuanhua Lei <chuanhua.lei@linux.intel.com>
AuthorDate: Thu, 6 Sep 2018 18:03:23 +0800
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Thu, 6 Sep 2018 14:22:01 +0200
x86/tsc: Prevent result truncation on 32bit
Loops per jiffy is calculated by multiplying tsc_khz with 1e3 and then
dividing it by HZ.
Both tsc_khz and the temporary variable holding the multiplication result
are of type unsigned long, so on 32bit the result is truncated to the lower
32bit.
Use u64 as type for the temporary variable and cast tsc_khz to it before
multiplying.
[ tglx: Massaged changelog and removed pointless braces ]
Fixes: cf7a63ef4e02 ("x86/tsc: Calibrate tsc only once")
Signed-off-by: Chuanhua Lei <chuanhua.lei@linux.intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: yixin.zhu@linux.intel.com
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Len Brown <len.brown@intel.com>
Cc: Pavel Tatashin <pasha.tatashin@microsoft.com>
Cc: Rajvi Jingar <rajvi.jingar@intel.com>
Cc: Dou Liyang <douly.fnst@cn.fujitsu.com>
Link: https://lkml.kernel.org/r/1536228203-18701-1-git-send-email-chuanhua.lei@linux.intel.com
---
arch/x86/kernel/tsc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
index 1463468ba9a0..6490f618e096 100644
--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -1415,7 +1415,7 @@ static bool __init determine_cpu_tsc_frequencies(bool early)
static unsigned long __init get_loops_per_jiffy(void)
{
- unsigned long lpj = tsc_khz * KHZ;
+ u64 lpj = (u64)tsc_khz * KHZ;
do_div(lpj, HZ);
return lpj;
prev parent reply other threads:[~2018-09-06 12:25 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-06 10:03 [PATCH] x86/tsc: Fix 32bit mode issue in get_loops_per_jiffy() Chuanhua Lei
2018-09-06 12:25 ` tip-bot for Chuanhua Lei [this message]
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=tip-17f6bac2249356c795339e03a0742cd79be3cab8@git.kernel.org \
--to=tipbot@zytor.com \
--cc=chuanhua.lei@linux.intel.com \
--cc=douly.fnst@cn.fujitsu.com \
--cc=hpa@zytor.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=pasha.tatashin@microsoft.com \
--cc=peterz@infradead.org \
--cc=rajvi.jingar@intel.com \
--cc=tglx@linutronix.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome