From patchwork Fri Dec 18 21:39:14 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 58762 Delivered-To: patches@linaro.org Received: by 10.112.89.199 with SMTP id bq7csp1285549lbb; Fri, 18 Dec 2015 13:39:49 -0800 (PST) X-Received: by 10.66.139.72 with SMTP id qw8mr8822412pab.130.1450474772023; Fri, 18 Dec 2015 13:39:32 -0800 (PST) Return-Path: Received: from mail-pa0-x231.google.com (mail-pa0-x231.google.com. [2607:f8b0:400e:c03::231]) by mx.google.com with ESMTPS id d10si26303775pap.237.2015.12.18.13.39.31 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 18 Dec 2015 13:39:31 -0800 (PST) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 2607:f8b0:400e:c03::231 as permitted sender) client-ip=2607:f8b0:400e:c03::231; Authentication-Results: mx.google.com; spf=pass (google.com: domain of john.stultz@linaro.org designates 2607:f8b0:400e:c03::231 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dkim=pass header.i=@linaro.org Received: by mail-pa0-x231.google.com with SMTP id ur14so66162343pab.0 for ; Fri, 18 Dec 2015 13:39:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=yurjLkxSLC8qW+bPAUqqrwL94/CbVt4H1IgAgB7+Pjg=; b=PRh/caocef+gTOYxIFYd5EF1RifHKpvZzkJtXs8nujQ8G3fb8ugbu1VK46htM9FZmd eGG97rk3E2OQ6bOneUMQatE7eA6UjCEVknXV49QT1CrZRWKpMv4yk+R3lKouptmKhlCz 4nJqd6eJ/H0wg2rBgRftylE1X0EIAlCBQtmaE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=yurjLkxSLC8qW+bPAUqqrwL94/CbVt4H1IgAgB7+Pjg=; b=TvEyMR8Iv0hK/2meDEqZ6ASHPtPbDwnwHrQPmNFJjrC485h2Lgi603USH2sgDAA0yY 93u/PxFD63FeuATwc+QyKRLAuzArd861GLpGuE7Fd0kB47vvpWp3rG/TYNAT+zy+qhGf RoOCzTnnj3kyCJOJwoOaKS3Pj3uea6U+RwDemIrWHxbdHb2tw6Jg7LwSi+4xGjzruncN rzLkNfmh1K/hqbgngHMwWM8Q6LOtYeg4+aZAM+9vqr9Z57B5uowSf5QJCm2uyAYzzESd Mqf4spk8ouQVQ3wyI90OOwbJBcjSOfpTSdvRgHHF/Umocjq8xQiO6j/MvJqsA7o0YX6Y 7SSg== X-Gm-Message-State: ALoCoQngj+yVh5kA02st1dn41T+UC37YP/16bpeaC+zbIUPg9vveikEY5Jj8IuYRElNvHV5SeC/fKOjPxGIMhVE1Mu+Dm0bbQA== X-Received: by 10.66.102.9 with SMTP id fk9mr2512203pab.77.1450474771561; Fri, 18 Dec 2015 13:39:31 -0800 (PST) Return-Path: Received: from localhost.localdomain (c-76-115-103-22.hsd1.or.comcast.net. [76.115.103.22]) by smtp.gmail.com with ESMTPSA id w62sm19642284pfi.48.2015.12.18.13.39.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 18 Dec 2015 13:39:31 -0800 (PST) From: John Stultz To: lkml Cc: DengChao , Thomas Gleixner , Ingo Molnar , Miroslav Lichvar , Prarit Bhargava , Richard Cochran , John Stultz Subject: [PATCH 09/11] ntp: Change time_reftime to time64_t and utilize 64bit __ktime_get_real_seconds Date: Fri, 18 Dec 2015 13:39:14 -0800 Message-Id: <1450474756-10144-10-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1450474756-10144-1-git-send-email-john.stultz@linaro.org> References: <1450474756-10144-1-git-send-email-john.stultz@linaro.org> From: DengChao 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 Cc: Ingo Molnar Cc: Miroslav Lichvar Cc: Prarit Bhargava Cc: Richard Cochran Reviewed-by: John Stultz Signed-off-by: DengChao [jstultz: Tweaked commit message] Signed-off-by: John Stultz --- kernel/time/ntp.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) -- 1.9.1 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 #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;