Patchwork [3.5.yuz,extended,stable] Patch "timekeeping: Cast raw_interval to u64 to avoid shift" has been added to staging queue

mail settings
Submitter Herton Ronaldo Krzesinski
Date Nov. 15, 2012, 5:49 a.m.
Message ID <>
Download mbox | patch
Permalink /patch/199173/
State New
Headers show


Herton Ronaldo Krzesinski - Nov. 15, 2012, 5:49 a.m.
This is a note to let you know that I have just added a patch titled

    timekeeping: Cast raw_interval to u64 to avoid shift

to the linux-3.5.y-queue branch of the 3.5.yuz extended stable tree 
which can be found at:;a=shortlog;h=refs/heads/linux-3.5.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.5.yuz tree, see



From c4a8d081f575962336278cd798ca78f784233cc8 Mon Sep 17 00:00:00 2001
From: Dan Carpenter <>
Date: Tue, 9 Oct 2012 10:18:23 +0300
Subject: [PATCH] timekeeping: Cast raw_interval to u64 to avoid shift

commit 5b3900cd409466c0070b234d941650685ad0c791 upstream.

We fixed a bunch of integer overflows in timekeeping code during the 3.6
cycle.  I did an audit based on that and found this potential overflow.

Signed-off-by: Dan Carpenter <>
Acked-by: John Stultz <>
Signed-off-by: Thomas Gleixner <>
[ herton: adapt for 3.5, timekeeper instead of tk pointer ]
Signed-off-by: Herton Ronaldo Krzesinski <>
 kernel/time/timekeeping.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)



diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index 63c88c1..8954990 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -1012,7 +1012,7 @@  static cycle_t logarithmic_accumulation(cycle_t offset, int shift)

 	/* Accumulate raw time */
-	raw_nsecs = timekeeper.raw_interval << shift;
+	raw_nsecs = (u64)timekeeper.raw_interval << shift;
 	raw_nsecs += timekeeper.raw_time.tv_nsec;
 	if (raw_nsecs >= NSEC_PER_SEC) {
 		u64 raw_secs = raw_nsecs;