Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62bea97f authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  ntp: Clamp PLL update interval
parents b61f6a57 8af3c153
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -149,10 +149,18 @@ static void ntp_update_offset(long offset)
	time_reftime = get_seconds();

	offset64    = offset;
	freq_adj    = (offset64 * secs) <<
			(NTP_SCALE_SHIFT - 2 * (SHIFT_PLL + 2 + time_constant));
	freq_adj    = ntp_update_offset_fll(offset64, secs);

	freq_adj    += ntp_update_offset_fll(offset64, secs);
	/*
	 * Clamp update interval to reduce PLL gain with low
	 * sampling rate (e.g. intermittent network connection)
	 * to avoid instability.
	 */
	if (unlikely(secs > 1 << (SHIFT_PLL + 1 + time_constant)))
		secs = 1 << (SHIFT_PLL + 1 + time_constant);

	freq_adj    += (offset64 * secs) <<
			(NTP_SCALE_SHIFT - 2 * (SHIFT_PLL + 2 + time_constant));

	freq_adj    = min(freq_adj + time_freq, MAXFREQ_SCALED);