Re: [PATCH 06/10] time: Cap clocksource reads to the clocksource max_cycles value

From: Peter Zijlstra
Date: Tue Jan 13 2015 - 06:11:55 EST


On Fri, Jan 09, 2015 at 04:34:24PM -0800, John Stultz wrote:
> When calculating the current delta since the last tick, we
> currently have no hard protections to prevent a multiplciation
> overflow from ocurring.
>
> This patch introduces such a cap that limits the read delta
> value to the max_cycles value, which is where an overflow would
> occur.

> +++ b/kernel/time/timekeeping.c
> @@ -202,6 +202,9 @@ static inline s64 timekeeping_get_ns(struct tk_read_base *tkr)
> /* calculate the delta since the last update_wall_time: */
> delta = clocksource_delta(cycle_now, tkr->cycle_last, tkr->mask);
>
> + /* Cap delta value to the max_cycles values to avoid mult overflows */
> + delta = min(delta, tkr->clock->max_cycles);
> +
> nsec = delta * tkr->mult + tkr->xtime_nsec;
> nsec >>= tkr->shift;
>

So while I appreciate stuff can be broken, should we not at least keep
track of this brokenness? That is, we all agree bad things happened IF
we actually hit this, right? So should we then not inform people that
bad things did happen?
--
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/