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