timekeeping: Use inject_offset in warp_clock
When warping the clock (from a local time RTC), use
timekeeping_inject_offset() to atomically add the offset.
This avoids any minor time error caused by the delay between
reading the time, and then setting the adjusted time.
Signed-off-by: John Stultz <john.stultz@linaro.org>
diff --git a/kernel/time.c b/kernel/time.c
index effac57..d3617db 100644
--- a/kernel/time.c
+++ b/kernel/time.c
@@ -142,9 +142,9 @@
struct timespec adjust;
persistent_clock_is_local = 1;
- adjust = current_kernel_time();
- adjust.tv_sec += sys_tz.tz_minuteswest * 60;
- do_settimeofday(&adjust);
+ adjust.tv_sec = sys_tz.tz_minuteswest * 60;
+ adjust.tv_nsec = 0;
+ timekeeping_inject_offset(&adjust);
}
}