Your message dated Mon, 28 Dec 2020 00:17:22 +0100
with message-id <[email protected]>
and subject line Re: Bug#528968: hwclock: pay attention to ongoing correction
has caused the Debian Bug report #528968,
regarding hwclock: pay attention to ongoing correction
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
528968: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=528968
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: util-linux
Version: 2.13.1.1-1
Severity: normal
Tags: patch
Hi,
when comparing with or setting the hardware clock hwclock should pay
attention to an ongoing correction. If the outstanding correction of the
system clock is more than a second, hwclock may calculate a wrong drift
of the hardware clock.
Bye, Jörg.
-- System Information:
Debian Release: unstable/experimental
APT prefers unstable
APT policy: (900, 'unstable'), (700, 'experimental')
Architecture: powerpc (ppc)
Kernel: Linux 2.6.29
Locale: LANG=C, LC_CTYPE=C (charmap=UTF-8) (ignored: LC_ALL set to de_DE.UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages util-linux depends on:
ii libc6 2.9-12 GNU C Library: Shared libraries
ii libncurses5 5.7+20090510-1 shared libraries for terminal hand
ii libselinux1 2.0.71-1 SELinux shared libraries
ii libslang2 2.1.4-3 The S-Lang programming library - r
ii libuuid1 1.41.5-1 universally unique id library
ii lsb-base 3.2-22 Linux Standard Base 3.2 init scrip
ii tzdata 2009g-1 time zone and daylight-saving time
ii zlib1g 1:1.2.3.3.dfsg-13 compression library - runtime
util-linux recommends no packages.
Versions of packages util-linux suggests:
ii dosfstools 3.0.2-1 utilities for making and checking
ii kbd 1.15-1 Linux console font and keytable ut
pn util-linux-locales <none> (no description available)
-- no debconf information
--- hwclock.c+ 2009-05-16 18:49:20.931695536 +0200
+++ hwclock.c 2009-05-16 19:49:42.411706841 +0200
@@ -490,6 +490,26 @@
}
+static int
+gettimeofday_with_adjtime(struct timeval *tv, struct timezone *tz) {
+ struct timeval ongoing_correction;
+
+ const int rc = gettimeofday(tv, tz);
+ if (rc)
+ return rc;
+
+ if ( !adjtime(NULL, &ongoing_correction) ) {
+ tv->tv_sec += ongoing_correction.tv_sec;
+ tv->tv_usec += ongoing_correction.tv_usec;
+ if (tv->tv_usec >= 1000000) {
+ ++tv->tv_sec;
+ tv->tv_usec -= 1000000;
+ }
+ }
+
+ return rc;
+}
+
static void
set_hardware_clock_exact(const time_t sethwtime,
@@ -519,7 +539,7 @@
struct timeval beginsystime, nowsystime;
time_resync:
- gettimeofday(&beginsystime, NULL);
+ gettimeofday_with_adjtime(&beginsystime, NULL);
newhwtime = sethwtime + (int) time_diff(beginsystime, refsystime) + 1;
if (debug)
printf(_("Time elapsed since reference time has been %.6f seconds.\n"
@@ -534,7 +554,7 @@
*/
do {
float tdiff;
- gettimeofday(&nowsystime, NULL);
+ gettimeofday_with_adjtime(&nowsystime, NULL);
tdiff = time_diff(nowsystime, beginsystime);
if (tdiff < 0)
goto time_resync; /* probably time was reset */
@@ -1092,7 +1112,7 @@
Defined only if hclock_valid is true.
*/
- gettimeofday(&read_time, NULL);
+ gettimeofday_with_adjtime(&read_time, NULL);
read_hardware_clock(universal, &hclock_valid, &hclocktime);
if (show) {
@@ -1112,7 +1132,7 @@
time, so we set it with reference to the most recent
whole seconds time.
*/
- gettimeofday(&nowtime, NULL);
+ gettimeofday_with_adjtime(&nowtime, NULL);
reftime.tv_sec = nowtime.tv_sec;
reftime.tv_usec = 0;
@@ -1315,7 +1335,7 @@
char *date_opt;
/* Remember what time we were invoked */
- gettimeofday(&startup_time, NULL);
+ gettimeofday_with_adjtime(&startup_time, NULL);
#ifdef HAVE_LIBAUDIT
hwaudit_fd = audit_open();
signature.asc
Description: Digital signature http://en.wikipedia.org/wiki/OpenPGP
--- End Message ---
--- Begin Message ---
* Jörg Sommer <[email protected]> [201227 23:16]:
> when comparing with or setting the hardware clock hwclock should pay
> attention to an ongoing correction. If the outstanding correction of the
> system clock is more than a second, hwclock may calculate a wrong drift
> of the hardware clock.
hwclock(8) documents quite clearly that hwclock --systohc requires
that nothing else except hwclock modifies the hardware clock. I
believe this includes any drift adjustments.
Chris
--- End Message ---