Hello Eran Ben Elisha, The patch cef35af34d6d: "net/mlx5e: Add mlx5e HV VHCA stats agent" from Aug 22, 2019, leads to the following static checker warning: drivers/net/ethernet/mellanox/mlx5/core/en/hv_vhca_stats.c:41 mlx5e_hv_vhca_fill_stats() warn: potential pointer math issue ('buf' is a u64 pointer) drivers/net/ethernet/mellanox/mlx5/core/en/hv_vhca_stats.c 33 static void mlx5e_hv_vhca_fill_stats(struct mlx5e_priv *priv, u64 *data, ^^^^^^^^^ data is a u64 pointer. 34 int buf_len) 35 { 36 int ch, i = 0; 37 38 for (ch = 0; ch < priv->max_nch; ch++) { 39 u64 *buf = data + i; ^^^^^^^^ 40 41 if (WARN_ON_ONCE(buf + 42 sizeof(struct mlx5e_hv_vhca_per_ring_stats) > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This pointer math doesn't work. I'm surprised the warning doesn't trigger. 43 data + buf_len)) 44 return; 45 46 mlx5e_hv_vhca_fill_ring_stats(priv, ch, 47 (struct mlx5e_hv_vhca_per_ring_stats *)buf); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If we made both "data" and "buf" void pointers then this would be much easier and the casting could be removed. 48 i += sizeof(struct mlx5e_hv_vhca_per_ring_stats) / sizeof(u64); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This math works, but it's so complicated and you have to verify that mlx5e_hv_vhca_per_ring_stats % sizeof(u64) is zero. 49 } 50 } regards, dan carpenter