[ 54/56] timekeeping: Cast raw_interval to u64 to avoid shift overflow
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: 2012-11-30 19:01:42
Also in:
lkml
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: 2012-11-30 19:01:42
Also in:
lkml
3.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Dan Carpenter <redacted> 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 <redacted> Acked-by: John Stultz <redacted> Link: http://lkml.kernel.org/r/20121009071823.GA19159@elgon.mountain Signed-off-by: Thomas Gleixner <redacted> Cc: Ben Hutchings <redacted> [ herton: adapt for 3.5, timekeeper instead of tk pointer ] Signed-off-by: Herton Ronaldo Krzesinski <redacted> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- kernel/time/timekeeping.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c@@ -1014,7 +1014,7 @@ static cycle_t logarithmic_accumulation( } /* 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;