On Wed, Jan 20, 2016 at 02:57:07PM -0500, Nicolas Pitre wrote:
> 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.

Ah indeed!

Reply via email to