On Wed, Apr 17, 2019 at 10:48 AM Miroslav Lichvar <mlich...@redhat.com> wrote:
> The ADJ_TAI adjtimex mode sets the TAI-UTC offset of the system clock.
> It is typically set by NTP/PTP implementations and it is automatically
> updated by the kernel on leap seconds. The initial value is zero (which
> applications may interpret as unknown), but this value cannot be set by
> adjtimex. This limitation seems to go back to the original "nanokernel"
> implementation by David Mills.
>
> Change the ADJ_TAI check to accept zero as a valid TAI-UTC offset in
> order to allow setting it back to the initial value.
>
> Cc: Thomas Gleixner <t...@linutronix.de>
> Cc: John Stultz <john.stu...@linaro.org>
> Cc: Richard Cochran <richardcoch...@gmail.com>
> Cc: Prarit Bhargava <pra...@redhat.com>
> Suggested-by: Ondrej Mosnacek <omosn...@redhat.com>
> Signed-off-by: Miroslav Lichvar <mlich...@redhat.com>

Thanks for sending the patch! Maybe you (or the committer) could
consider adding:

Fixes: 153b5d054ac2 ("ntp: support for TAI")

so that it gets to the stable kernels as well.

> ---
>  kernel/time/ntp.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
> index 92a90014a925..f43d47c8c3b6 100644
> --- a/kernel/time/ntp.c
> +++ b/kernel/time/ntp.c
> @@ -690,7 +690,7 @@ static inline void process_adjtimex_modes(const struct 
> __kernel_timex *txc,
>                 time_constant = max(time_constant, 0l);
>         }
>
> -       if (txc->modes & ADJ_TAI && txc->constant > 0)
> +       if (txc->modes & ADJ_TAI && txc->constant >= 0)
>                 *time_tai = txc->constant;
>
>         if (txc->modes & ADJ_OFFSET)
> --
> 2.17.2

-- 
Ondrej Mosnacek <omosnace at redhat dot com>
Software Engineer, Security Technologies
Red Hat, Inc.

Reply via email to