Skip to content

Commit da75fa5

Browse files
Jianbo LiuSaeed Mahameed
authored andcommitted
net/mlx5e: Fix overrun reported by coverity
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: 9bee385 ("net/mlx5: E-switch, refactor FDB miss rule add/remove") Signed-off-by: Jianbo Liu <[email protected]> Reviewed-by: Roi Dayan <[email protected]> Signed-off-by: Saeed Mahameed <[email protected]>
1 parent e75efc6 commit da75fa5

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,9 +1177,9 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
11771177
struct mlx5_flow_handle *flow;
11781178
struct mlx5_flow_spec *spec;
11791179
struct mlx5_vport *vport;
1180+
int err, pfindex;
11801181
unsigned long i;
11811182
void *misc;
1182-
int err;
11831183

11841184
if (!MLX5_VPORT_MANAGER(esw->dev) && !mlx5_core_is_ecpf_esw_manager(esw->dev))
11851185
return 0;
@@ -1255,7 +1255,15 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
12551255
flows[vport->index] = flow;
12561256
}
12571257
}
1258-
esw->fdb_table.offloads.peer_miss_rules[mlx5_get_dev_index(peer_dev)] = flows;
1258+
1259+
pfindex = mlx5_get_dev_index(peer_dev);
1260+
if (pfindex >= MLX5_MAX_PORTS) {
1261+
esw_warn(esw->dev, "Peer dev index(%d) is over the max num defined(%d)\n",
1262+
pfindex, MLX5_MAX_PORTS);
1263+
err = -EINVAL;
1264+
goto add_ec_vf_flow_err;
1265+
}
1266+
esw->fdb_table.offloads.peer_miss_rules[pfindex] = flows;
12591267

12601268
kvfree(spec);
12611269
return 0;

0 commit comments

Comments
 (0)