From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Gospodarek Subject: Re: [PATCH net] net/dim: Fix int overflow Date: Thu, 29 Mar 2018 08:01:59 -0400 Message-ID: <20180329120159.GB23910@C02RW35GFVH8> References: <1522320832-18416-1-git-send-email-talgi@mellanox.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: "David S. Miller" , netdev@vger.kernel.org, Tariq Toukan , Andy Gospodarek , Saeed Mahameed To: Tal Gilboa Return-path: Received: from mail-qt0-f195.google.com ([209.85.216.195]:47102 "EHLO mail-qt0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751213AbeC2MCH (ORCPT ); Thu, 29 Mar 2018 08:02:07 -0400 Received: by mail-qt0-f195.google.com with SMTP id h4so5898615qtn.13 for ; Thu, 29 Mar 2018 05:02:06 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1522320832-18416-1-git-send-email-talgi@mellanox.com> Sender: netdev-owner@vger.kernel.org List-ID: 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 Reviewed-by: Andy Gospodarek > --- > 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 >