On 01/08/17 09:11, Matija Glavinic Pecotic wrote: > For e.g. HZ=100, timer being 430 jiffies in the future, and 32 bit > unsigned int, there is an overflow on unsigned int right-hand side > of the expression which results with wrong values being returned. > > Problem was observed on tickless core and with following applied: > > sched/nohz: add debugfs control over sched_tick_max_deferment > https://lkml.org/lkml/2013/9/16/499 > > Signed-off-by: Matija Glavinic Pecotic <matija.glavinic-pecotic....@nokia.com>
Reviewed-by: Alexander Sverdlin <alexander.sverd...@nokia.com> > --- > kernel/time/timer.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/time/timer.c b/kernel/time/timer.c > index 71ce3f4..8f5d1bf 100644 > --- a/kernel/time/timer.c > +++ b/kernel/time/timer.c > @@ -1495,7 +1495,7 @@ u64 get_next_timer_interrupt(unsigned long basej, u64 > basem) > base->is_idle = false; > } else { > if (!is_max_delta) > - expires = basem + (nextevt - basej) * TICK_NSEC; > + expires = basem + (u64)(nextevt - basej) * TICK_NSEC; > /* > * If we expect to sleep more than a tick, mark the base idle: > */ -- Best regards, Alexander Sverdlin.