[PATCH 0/2] hwclock: Fix excessive adjustment

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Algorithm of calculation of hwclock adjustment is vulnerable to
miscalculations. These miscalculations may lead to clock drifting by
many years even after fixing CMOS hwclock failure.

Following two patches are attempts to solve the most visible parts of
the problem:
- Calculation of excessive drift values in /etc/adjtime
- Applying of excessive drift that causes many years clock failure.
- It also prevents hangs before 4a44a54b.

There are further poor places in the code that are above the scope of
this patch set:
- Algorithm for detecting of invalid hwclock is very poor (valid_p fails
  only if hwclock output fails to pass mktime()).
- There is no or failing discrimination between fine time adjustment and
  clock set.
- In particular, proposed patch does not cover miscalculation while
  changing clock due to DST change, and more than 2 days passed since
  last adjustment. This could be covered by lowering of MAX_DRIFT, but
  heuristics for discrimination between adjustment and clock setting
  would be much better.
- Most of failures fixed by these patches were hidden by a poor
  calculation of time passed since last adjustment:
  if ((hclocktime - adjtime_p->last_calib_time) < 23 * 60 * 60)
  (As there is no abs(), all times in past were considered as "less than
  one day ago".)

-- 
Best Regards / S pozdravem,

Stanislav Brabec
software developer
---------------------------------------------------------------------
SUSE LINUX, s. r. o.                          e-mail: sbrabec@xxxxxxx
Lihovarská 1060/12                            tel: +49 911 7405384547
190 00 Praha 9                                 fax:  +420 284 084 001
Czech Republic                                    http://www.suse.cz/
PGP: 830B 40D5 9E05 35D8 5E27 6FA3 717C 209F A04F CD76

--
To unsubscribe from this list: send the line "unsubscribe util-linux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux