On Tue, May 29, 2012 at 06:49:30PM -0700, John Stultz wrote:Yep. Good point.diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.cDon't you need this in update_wall_time() too?
index 6e46cac..81c76a9 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -962,6 +962,7 @@ static cycle_t logarithmic_accumulation(cycle_t offset, int shift)
timekeeper.xtime.tv_sec++;
leap = second_overflow(timekeeper.xtime.tv_sec);
timekeeper.xtime.tv_sec += leap;
+ timekeeper.wall_to_monotonic.tv_sec -= leap;
BTW I suggest refactoring this code (two almost identical if{} bodies)Sounds good, although since the logic is ever so slightly different I might split up the pure fix and do the refactoring later so the fix is easier to apply to -stable branches.
into a shared helper function.