Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1295200
| From | John Stultz <john.stultz@linaro.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 09/11] ntp: Change time_reftime to time64_t and utilize 64bit __ktime_get_real_seconds |
| Date | 2015-12-18 22:50 +0100 |
| Message-ID | <qHb4t-2GQ-3@gated-at.bofh.it> (permalink) |
| References | <qHaUO-2Dm-11@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
From: DengChao <chao.deng@linaro.org> The type of static variant "time_reftime" and the call of get_seconds in ntp are both not y2038 safe. So change the type of time_reftime to time64_t and replace get_seconds with __ktime_get_real_seconds. The local variant "secs" in ntp_update_offset represents seconds between now and last ntp adjustment, it seems impossible that this time will last more than 68 years, so keep its type as "long". Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@kernel.org> Cc: Miroslav Lichvar <mlichvar@redhat.com> Cc: Prarit Bhargava <prarit@redhat.com> Cc: Richard Cochran <richardcochran@gmail.com> Reviewed-by: John Stultz <john.stultz@linaro.org> Signed-off-by: DengChao <chao.deng@linaro.org> [jstultz: Tweaked commit message] Signed-off-by: John Stultz <john.stultz@linaro.org> --- kernel/time/ntp.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c index 4073c95..e947bfd 100644 --- a/kernel/time/ntp.c +++ b/kernel/time/ntp.c @@ -18,6 +18,8 @@ #include <linux/rtc.h> #include "ntp_internal.h" +#include "timekeeping_internal.h" + /* * NTP timekeeping variables: @@ -70,7 +72,7 @@ static long time_esterror = NTP_PHASE_LIMIT; static s64 time_freq; /* time at last adjustment (secs): */ -static long time_reftime; +static time64_t time_reftime; static long time_adjust; @@ -313,11 +315,11 @@ static void ntp_update_offset(long offset) * Select how the frequency is to be controlled * and in which mode (PLL or FLL). */ - secs = get_seconds() - time_reftime; + secs = (long)(__ktime_get_real_seconds() - time_reftime); if (unlikely(time_status & STA_FREQHOLD)) secs = 0; - time_reftime = get_seconds(); + time_reftime = __ktime_get_real_seconds(); offset64 = offset; freq_adj = ntp_update_offset_fll(offset64, secs); @@ -592,7 +594,7 @@ static inline void process_adj_status(struct timex *txc, struct timespec64 *ts) * reference time to current time. */ if (!(time_status & STA_PLL) && (txc->status & STA_PLL)) - time_reftime = get_seconds(); + time_reftime = __ktime_get_real_seconds(); /* only set allowed bits */ time_status &= STA_RONLY; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 00/11][GIT PULL] Timekeeping items for 4.5 John Stultz <john.stultz@linaro.org> - 2015-12-18 22:40 +0100 [PATCH 07/11] time: Verify time values in adjtimex ADJ_SETOFFSET to avoid overflow John Stultz <john.stultz@linaro.org> - 2015-12-18 22:40 +0100 [PATCH 06/11] ntp: Verify offset doesn't overflow in ntp_update_offset John Stultz <john.stultz@linaro.org> - 2015-12-18 22:40 +0100 [PATCH 01/11] MAINTAINERS: Add entry for kernel/time/alarmtimer.c John Stultz <john.stultz@linaro.org> - 2015-12-18 22:50 +0100 [PATCH 09/11] ntp: Change time_reftime to time64_t and utilize 64bit __ktime_get_real_seconds John Stultz <john.stultz@linaro.org> - 2015-12-18 22:50 +0100 [PATCH 03/11] time: Avoid signed overflow in timekeeping_get_ns() John Stultz <john.stultz@linaro.org> - 2015-12-18 22:50 +0100 [PATCH 04/11] clocksource: Add CPU info to clocksource watchdog reporting John Stultz <john.stultz@linaro.org> - 2015-12-18 22:50 +0100 [PATCH 10/11] ntp: Fix second_overflow's input parameter type to be 64bits John Stultz <john.stultz@linaro.org> - 2015-12-18 22:50 +0100 [PATCH 08/11] timekeeping: Provide internal function __ktime_get_real_seconds John Stultz <john.stultz@linaro.org> - 2015-12-18 22:50 +0100 [PATCH 05/11] selftests/timers: fix write return value handlng John Stultz <john.stultz@linaro.org> - 2015-12-18 22:50 +0100 [PATCH 02/11] alarmtimer: Avoid unexpected rtc interrupt when system resume from S3 John Stultz <john.stultz@linaro.org> - 2015-12-18 22:50 +0100
csiph-web