On Thu, Mar 29, 2018 at 01:53:52PM +0300, Tal Gilboa wrote: > When calculating difference between samples, the values > are multiplied by 100. Large values may cause int overflow > when multiplied (usually on first iteration). > Fixed by forcing 100 to be of type unsigned long. > > Fixes: 4c4dbb4a7363 ("net/mlx5e: Move dynamic interrupt coalescing code to > include/linux") > Signed-off-by: Tal Gilboa <ta...@mellanox.com>
Reviewed-by: Andy Gospodarek <go...@broadcom.com> > --- > include/linux/net_dim.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/linux/net_dim.h b/include/linux/net_dim.h > index bebeaad..29ed8fd 100644 > --- a/include/linux/net_dim.h > +++ b/include/linux/net_dim.h > @@ -231,7 +231,7 @@ static inline void net_dim_exit_parking(struct net_dim > *dim) > } > > #define IS_SIGNIFICANT_DIFF(val, ref) \ > - (((100 * abs((val) - (ref))) / (ref)) > 10) /* more than 10% difference > */ > + (((100UL * abs((val) - (ref))) / (ref)) > 10) /* more than 10% > difference */ > > static inline int net_dim_stats_compare(struct net_dim_stats *curr, > struct net_dim_stats *prev) > -- > 1.8.3.1 >