On Mon, May 05, 2014 at 08:49:01PM +0200, Stanislav Brabec wrote: > 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. Applied, thanks. > 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".) Look forward to see another patches ;-) Karel -- Karel Zak <kzak@xxxxxxxxxx> http://karelzak.blogspot.com -- 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