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 <[email protected]>
Cc: John Stultz <[email protected]>
Cc: Richard Cochran <[email protected]>
Cc: Prarit Bhargava <[email protected]>
Suggested-by: Ondrej Mosnacek <[email protected]>
Signed-off-by: Miroslav Lichvar <[email protected]>
---
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
On Wed, Apr 17, 2019 at 10:48 AM Miroslav Lichvar <[email protected]> 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 <[email protected]>
> Cc: John Stultz <[email protected]>
> Cc: Richard Cochran <[email protected]>
> Cc: Prarit Bhargava <[email protected]>
> Suggested-by: Ondrej Mosnacek <[email protected]>
> Signed-off-by: Miroslav Lichvar <[email protected]>
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.
On Wed, Apr 17, 2019 at 11:00:23AM +0200, Ondrej Mosnacek wrote:
> On Wed, Apr 17, 2019 at 10:48 AM Miroslav Lichvar <[email protected]> wrote:
> > 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.
> Thanks for sending the patch! Maybe you (or the committer) could
> consider adding:
>
> Fixes: 153b5d054ac2 ("ntp: support for TAI")
To me the change looks more like an extension of the API, rather than
a bug fix, so I'd leave that up to the committer.
--
Miroslav Lichvar
On Thu, 18 Apr 2019, Miroslav Lichvar wrote:
> On Wed, Apr 17, 2019 at 11:00:23AM +0200, Ondrej Mosnacek wrote:
> > On Wed, Apr 17, 2019 at 10:48 AM Miroslav Lichvar <[email protected]> wrote:
> > > 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.
>
> > Thanks for sending the patch! Maybe you (or the committer) could
> > consider adding:
> >
> > Fixes: 153b5d054ac2 ("ntp: support for TAI")
>
> To me the change looks more like an extension of the API, rather than
> a bug fix, so I'd leave that up to the committer.
I don't see why we need to backport that all the way, but I'm happy to add
the tag if there is some really good reason.
Thanks,
tglx
On Thu, Apr 18, 2019 at 11:07 AM Thomas Gleixner <[email protected]> wrote:
> On Thu, 18 Apr 2019, Miroslav Lichvar wrote:
> > On Wed, Apr 17, 2019 at 11:00:23AM +0200, Ondrej Mosnacek wrote:
> > > On Wed, Apr 17, 2019 at 10:48 AM Miroslav Lichvar <[email protected]> wrote:
> > > > 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.
> >
> > > Thanks for sending the patch! Maybe you (or the committer) could
> > > consider adding:
> > >
> > > Fixes: 153b5d054ac2 ("ntp: support for TAI")
> >
> > To me the change looks more like an extension of the API, rather than
> > a bug fix, so I'd leave that up to the committer.
>
> I don't see why we need to backport that all the way, but I'm happy to add
> the tag if there is some really good reason.
OK, I can live without it, it's just that it kind of breaks the tests
for the recent time auditing patches [1] (I try to reset to previous
values when triggering events). I worked around it for now by
resetting the value to 1 when original value was 0... I don't know if
it can lead to some issues or not, but it would be nice if I could
reset to the actual original value...
[1] https://github.com/linux-audit/audit-testsuite/pull/82/files#diff-555d96083b536100d9b7e3eea56feadbR76
--
Ondrej Mosnacek <omosnace at redhat dot com>
Software Engineer, Security Technologies
Red Hat, Inc.
Commit-ID: fdc6bae940ee9eb869e493990540098b8c0fd6ab
Gitweb: https://git.kernel.org/tip/fdc6bae940ee9eb869e493990540098b8c0fd6ab
Author: Miroslav Lichvar <[email protected]>
AuthorDate: Wed, 17 Apr 2019 10:48:33 +0200
Committer: Thomas Gleixner <[email protected]>
CommitDate: Thu, 9 May 2019 10:46:58 +0200
ntp: Allow TAI-UTC offset to be set to zero
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.
Fixes: 153b5d054ac2 ("ntp: support for TAI")
Suggested-by: Ondrej Mosnacek <[email protected]>
Signed-off-by: Miroslav Lichvar <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Cc: John Stultz <[email protected]>
Cc: Richard Cochran <[email protected]>
Cc: Prarit Bhargava <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
---
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)