net/mlx5e: Fix static checker warning of potential pointer math issue
authorEran Ben Elisha <eranbe@mellanox.com>
Wed, 28 Aug 2019 07:40:58 +0000 (10:40 +0300)
committerSaeed Mahameed <saeedm@mellanox.com>
Thu, 5 Sep 2019 21:44:40 +0000 (14:44 -0700)
Cited patch have an issue in WARN_ON_ONCE check, with wrong address ranges
are compared. Fix that by changing pointer types from u64* to void*. This
will also make code simpler to read.

In addition mlx5e_hv_vhca_fill_ring_stats can get void pointer, so remove
the unnecessary casting when calling it.

Found by static checker:
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)

Fixes: cef35af34d6d ("net/mlx5e: Add mlx5e HV VHCA stats agent")
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/en/hv_vhca_stats.c

index c37b4ac..b3a249b 100644 (file)
@@ -30,22 +30,21 @@ mlx5e_hv_vhca_fill_ring_stats(struct mlx5e_priv *priv, int ch,
        }
 }
 
-static void mlx5e_hv_vhca_fill_stats(struct mlx5e_priv *priv, u64 *data,
+static void mlx5e_hv_vhca_fill_stats(struct mlx5e_priv *priv, void *data,
                                     int buf_len)
 {
        int ch, i = 0;
 
        for (ch = 0; ch < priv->max_nch; ch++) {
-               u64 *buf = data + i;
+               void *buf = data + i;
 
                if (WARN_ON_ONCE(buf +
                                 sizeof(struct mlx5e_hv_vhca_per_ring_stats) >
                                 data + buf_len))
                        return;
 
-               mlx5e_hv_vhca_fill_ring_stats(priv, ch,
-                                             (struct mlx5e_hv_vhca_per_ring_stats *)buf);
-               i += sizeof(struct mlx5e_hv_vhca_per_ring_stats) / sizeof(u64);
+               mlx5e_hv_vhca_fill_ring_stats(priv, ch, buf);
+               i += sizeof(struct mlx5e_hv_vhca_per_ring_stats);
        }
 }