• Ingo Molnar's avatar
    time: ntp: fix bug in ntp_update_offset() & do_adjtimex() · 10dd31a7
    Ingo Molnar authored
    Impact: change (fix) the way the NTP PLL seconds offset is initialized/tracked
    
    Fix a bug and do a micro-optimization:
    
    When PLL is enabled we do not reset time_reftime. If the PLL
    was off for a long time (for example after bootup), this is
    arguably the wrong thing to do.
    
    We already had a hack for the common boot-time case in
    ntp_update_offset(), in form of:
    
    	if (unlikely(time_status & STA_FREQHOLD || time_reftime == 0))
     		secs = 0;
    
    But the update delta should be reset later on too - not just when
    the PLL is enabled for the first time after bootup.
    
    So do it on !STA_PLL -> STA_PLL transitions.
    
    This changes behavior, as previously if ntpd was disabled for
    a long time and we restarted it, we'd run from that last update,
    with a very large delta.
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    10dd31a7
ntp.c 12.2 KB