aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarry Song <21cnbao@gmail.com>2009-12-15 16:45:34 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2009-12-16 07:19:57 -0800
commitf065f41f48569122b5bcddbd1ba2354f7cc29fdc (patch)
tree68606305bfb3aba16437017e0596ccae11e6f6db
parent4365a5676fa3aa1d5ae6c90c22a0044f09ba584e (diff)
timecompare: fix half-Y2K38 problem in timecompare_update while calculating offset
ktime will overflow from 03:14:07 UTC on Tuesday, 19 January 2038, ktime_add() in timecompare_update() will overflow a half earlier. As a result, wrong offset will be gotten, then cause some strange problems. Signed-off-by: Barry Song <21cnbao@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@elte.hu> Cc: Patrick Ohly <patrick.ohly@intel.com> Cc: David S. Miller <davem@davemloft.net> Cc: John Stultz <johnstul@us.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--kernel/time/timecompare.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/time/timecompare.c b/kernel/time/timecompare.c
index 96ff643a5a5..12f5c55090b 100644
--- a/kernel/time/timecompare.c
+++ b/kernel/time/timecompare.c
@@ -89,7 +89,7 @@ int timecompare_offset(struct timecompare *sync,
* source time
*/
sample.offset =
- ktime_to_ns(ktime_add(end, start)) / 2 -
+ (ktime_to_ns(end) + ktime_to_ns(start)) / 2 -
ts;
/* simple insertion sort based on duration */