Re: [PATCH] NOHZ: prevent multiplication overflow - stop timer forhuge timeouts

From: David Miller
Date: Tue May 29 2007 - 19:02:29 EST


From: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Date: Tue, 29 May 2007 23:47:39 +0200

> get_next_timer_interrupt() returns a delta of (LONG_MAX > 1) in case
> there is no timer pending. On 64 bit machines this results in a
> multiplication overflow in tick_nohz_stop_sched_tick().
>
> Reported by: Dave Miller <davem@xxxxxxxxxxxxx>
>
> Make the return value a constant and limit the return value to a 32 bit
> value.
>
> When the max timeout value is returned, we can safely stop the tick
> timer device. The max jiffies delta results in a 12 days timeout for
> HZ=1000.
>
> In the long term the get_next_timer_interrupt() code needs to be
> reworked to return ktime instead of jiffies, but we have to wait until
> the last users of the original NO_IDLE_HZ code are converted.
>
> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>

Acked-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/