mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 05:31:08 -04:00
For some frequencies, the clocks_calc_mult_shift() function will unfortunately select mult values very close to 0xffffffff. This has the potential to overflow when NTP adjusts the clock, adding to the mult value. This patch adds a clocksource.maxadj value, which provides an approximation of an 11% adjustment(NTP limits adjustments to 500ppm and the tick adjustment is limited to 10%), which could be made to the clocksource.mult value. This is then used to both check that the current mult value won't overflow/underflow, as well as warning us if the timekeeping_adjust() code pushes over that 11% boundary. v2: Fix max_adjustment calculation, and improve WARN_ONCE messages. v3: Don't warn before maxadj has actually been set CC: Yong Zhang <[email protected]> CC: David Daney <[email protected]> CC: Thomas Gleixner <[email protected]> CC: Chen Jie <[email protected]> CC: zhangfx <[email protected]> CC: [email protected] Reported-by: Chen Jie <[email protected]> Reported-by: zhangfx <[email protected]> Tested-by: Yong Zhang <[email protected]> Signed-off-by: John Stultz <[email protected]>