diff options
author | Eran Ben Elisha <eranbe@mellanox.com> | 2019-08-28 09:40:58 +0200 |
---|---|---|
committer | Saeed Mahameed <saeedm@mellanox.com> | 2019-09-05 23:44:40 +0200 |
commit | 394cf13c24978ae2744d3bc22d6fd67b35247ef8 (patch) | |
tree | d0657266a60941a982d260ae1e95bdba9ecff1ae | |
parent | r8152: adjust the settings of ups flags (diff) | |
download | linux-394cf13c24978ae2744d3bc22d6fd67b35247ef8.tar.xz linux-394cf13c24978ae2744d3bc22d6fd67b35247ef8.zip |
net/mlx5e: Fix static checker warning of potential pointer math issue
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>
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/en/hv_vhca_stats.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/hv_vhca_stats.c b/drivers/net/ethernet/mellanox/mlx5/core/en/hv_vhca_stats.c index c37b4acd9bd5..b3a249b2a482 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/hv_vhca_stats.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/hv_vhca_stats.c @@ -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); } } |