mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 14:04:54 +02:00
net/mlx5e: Fix overrun reported by coverity
[ Upstream commitda75fa5428] Coverity Scan reports the following issue. But it's impossible that mlx5_get_dev_index returns 7 for PF, even if the index is calculated from PCI FUNC ID. So add the checking to make coverity slience. CID 610894 (#2 of 2): Out-of-bounds write (OVERRUN) Overrunning array esw->fdb_table.offloads.peer_miss_rules of 4 8-byte elements at element index 7 (byte offset 63) using index mlx5_get_dev_index(peer_dev) (which evaluates to 7). Fixes:9bee385a6e("net/mlx5: E-switch, refactor FDB miss rule add/remove") Signed-off-by: Jianbo Liu <jianbol@nvidia.com> Reviewed-by: Roi Dayan <roid@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
2f4d632836
commit
595d51b295
|
|
@ -1177,9 +1177,9 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
|
|||
struct mlx5_flow_handle *flow;
|
||||
struct mlx5_flow_spec *spec;
|
||||
struct mlx5_vport *vport;
|
||||
int err, pfindex;
|
||||
unsigned long i;
|
||||
void *misc;
|
||||
int err;
|
||||
|
||||
if (!MLX5_VPORT_MANAGER(esw->dev) && !mlx5_core_is_ecpf_esw_manager(esw->dev))
|
||||
return 0;
|
||||
|
|
@ -1255,7 +1255,15 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
|
|||
flows[vport->index] = flow;
|
||||
}
|
||||
}
|
||||
esw->fdb_table.offloads.peer_miss_rules[mlx5_get_dev_index(peer_dev)] = flows;
|
||||
|
||||
pfindex = mlx5_get_dev_index(peer_dev);
|
||||
if (pfindex >= MLX5_MAX_PORTS) {
|
||||
esw_warn(esw->dev, "Peer dev index(%d) is over the max num defined(%d)\n",
|
||||
pfindex, MLX5_MAX_PORTS);
|
||||
err = -EINVAL;
|
||||
goto add_ec_vf_flow_err;
|
||||
}
|
||||
esw->fdb_table.offloads.peer_miss_rules[pfindex] = flows;
|
||||
|
||||
kvfree(spec);
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user