aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEran Ben Elisha <eranbe@mellanox.com>2018-09-16 07:45:27 -0400
committerSaeed Mahameed <saeedm@mellanox.com>2018-10-01 13:58:00 -0400
commit11aa5800ed66ed0415b7509f02881c76417d212a (patch)
treedf3ff657279c6cf5ffc6163a4976d768c5a47038
parent4d8fcf216c90bc25e34ae2200aa8985ee3158898 (diff)
net/mlx5: E-Switch, Fix out of bound access when setting vport rate
The code that deals with eswitch vport bw guarantee was going beyond the eswitch vport array limit, fix that. This was pointed out by the kernel address sanitizer (KASAN). The error from KASAN log: [2018-09-15 15:04:45] BUG: KASAN: slab-out-of-bounds in mlx5_eswitch_set_vport_rate+0x8c1/0xae0 [mlx5_core] Fixes: c9497c98901c ("net/mlx5: Add support for setting VF min rate") Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com> Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/eswitch.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
index 2b252cde5cc2..ea7dedc2d5ad 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
@@ -2000,7 +2000,7 @@ static u32 calculate_vports_min_rate_divider(struct mlx5_eswitch *esw)
2000 u32 max_guarantee = 0; 2000 u32 max_guarantee = 0;
2001 int i; 2001 int i;
2002 2002
2003 for (i = 0; i <= esw->total_vports; i++) { 2003 for (i = 0; i < esw->total_vports; i++) {
2004 evport = &esw->vports[i]; 2004 evport = &esw->vports[i];
2005 if (!evport->enabled || evport->info.min_rate < max_guarantee) 2005 if (!evport->enabled || evport->info.min_rate < max_guarantee)
2006 continue; 2006 continue;
@@ -2020,7 +2020,7 @@ static int normalize_vports_min_rate(struct mlx5_eswitch *esw, u32 divider)
2020 int err; 2020 int err;
2021 int i; 2021 int i;
2022 2022
2023 for (i = 0; i <= esw->total_vports; i++) { 2023 for (i = 0; i < esw->total_vports; i++) {
2024 evport = &esw->vports[i]; 2024 evport = &esw->vports[i];
2025 if (!evport->enabled) 2025 if (!evport->enabled)
2026 continue; 2026 continue;