On Wed, 20 Jan 2016, Peter Zijlstra wrote:

> On Wed, Jan 20, 2016 at 05:00:33PM +0100, Daniel Lezcano wrote:
> > +static inline u32 stats_mean(struct stats *s)
> > +{
> > +   /*
> > +    * gcc is smart enough to convert to a bits shift when the
> > +    * divisor is constant and multiple of 2^x.
> > +    *
> > +    * The number of values could have not reached STATS_NR_VALUES
> > +    * yet, but we can consider it acceptable as the situation is
> > +    * only at the beginning of the burst of irqs.
> > +    */
> > +   return s->sum / STATS_NR_VALUES;
> > +}
> 
> Note that ->sum is u64, so you're very prone to truncation.

It won't.  It is the sum of u32 values, so the mean of those values 
can't exceed 32 bits.


Nicolas

Reply via email to