提交 f97c3dc3 编写于 作者: T Tal Gilboa 提交者: David S. Miller

net/dim: Fix int overflow

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: 4c4dbb4a ("net/mlx5e: Move dynamic interrupt coalescing code to include/linux")
Signed-off-by: NTal Gilboa <talgi@mellanox.com>
Reviewed-by: NAndy Gospodarek <gospo@broadcom.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 52a9692a
...@@ -231,7 +231,7 @@ static inline void net_dim_exit_parking(struct net_dim *dim) ...@@ -231,7 +231,7 @@ static inline void net_dim_exit_parking(struct net_dim *dim)
} }
#define IS_SIGNIFICANT_DIFF(val, ref) \ #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, static inline int net_dim_stats_compare(struct net_dim_stats *curr,
struct net_dim_stats *prev) struct net_dim_stats *prev)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册