Re: [RFC v4 22/22] timekeeping: inform clockevents about freq adjustments

From: Thomas Gleixner
Date: Thu Aug 25 2016 - 11:28:20 EST


On Tue, 23 Aug 2016, Nicolai Stange wrote:
> + raw_spin_lock_irqsave(&clockevents_lock, flags);
> + list_for_each_entry(dev, &clockevent_devices, list) {
> + if (!(dev->features & CLOCK_EVT_FEAT_ONESHOT))
> + continue;
> +
> + mult_raw = dev->mult;
> + if (mult_raw != last_mult_raw) {
> + last_mult_raw = mult_raw;
> + last_mult_adjusted =
> + __clockevents_calc_adjust_freq(mult_raw,
> + mult_cs_mono,
> + mult_cs_raw);

What makes sure that the resulting shift/mult pair is still valid after this
adjustment? The non adjusted mult/shift pair might be right at the border of
potential overflows and the adjustment might just put it over the edge....
We need at least sanity checks here.

Thanks,

tglx