Skip to content

Commit b9a4c74

Browse files
committed
Merge branch 'net-mlx5-fix-null-dereference-and-memory-leak-in-ttc_table-creation'
Henry Martin says: ==================== net/mlx5: Fix NULL dereference and memory leak in ttc_table creation This patch series addresses two issues in the mlx5_create_inner_ttc_table() and mlx5_create_ttc_table() functions: 1. A potential NULL pointer dereference if mlx5_get_flow_namespace() returns NULL. 2. A memory leak in the error path when ttc_type is invalid (default: switch case). ==================== Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 750d0ac + fa8fd31 commit b9a4c74

File tree

1 file changed

+18
-8
lines changed
  • drivers/net/ethernet/mellanox/mlx5/core/lib

1 file changed

+18
-8
lines changed

drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -637,10 +637,6 @@ struct mlx5_ttc_table *mlx5_create_inner_ttc_table(struct mlx5_core_dev *dev,
637637
bool use_l4_type;
638638
int err;
639639

640-
ttc = kvzalloc(sizeof(*ttc), GFP_KERNEL);
641-
if (!ttc)
642-
return ERR_PTR(-ENOMEM);
643-
644640
switch (params->ns_type) {
645641
case MLX5_FLOW_NAMESPACE_PORT_SEL:
646642
use_l4_type = MLX5_CAP_GEN_2(dev, pcc_ifa2) &&
@@ -654,7 +650,16 @@ struct mlx5_ttc_table *mlx5_create_inner_ttc_table(struct mlx5_core_dev *dev,
654650
return ERR_PTR(-EINVAL);
655651
}
656652

653+
ttc = kvzalloc(sizeof(*ttc), GFP_KERNEL);
654+
if (!ttc)
655+
return ERR_PTR(-ENOMEM);
656+
657657
ns = mlx5_get_flow_namespace(dev, params->ns_type);
658+
if (!ns) {
659+
kvfree(ttc);
660+
return ERR_PTR(-EOPNOTSUPP);
661+
}
662+
658663
groups = use_l4_type ? &inner_ttc_groups[TTC_GROUPS_USE_L4_TYPE] :
659664
&inner_ttc_groups[TTC_GROUPS_DEFAULT];
660665

@@ -710,10 +715,6 @@ struct mlx5_ttc_table *mlx5_create_ttc_table(struct mlx5_core_dev *dev,
710715
bool use_l4_type;
711716
int err;
712717

713-
ttc = kvzalloc(sizeof(*ttc), GFP_KERNEL);
714-
if (!ttc)
715-
return ERR_PTR(-ENOMEM);
716-
717718
switch (params->ns_type) {
718719
case MLX5_FLOW_NAMESPACE_PORT_SEL:
719720
use_l4_type = MLX5_CAP_GEN_2(dev, pcc_ifa2) &&
@@ -727,7 +728,16 @@ struct mlx5_ttc_table *mlx5_create_ttc_table(struct mlx5_core_dev *dev,
727728
return ERR_PTR(-EINVAL);
728729
}
729730

731+
ttc = kvzalloc(sizeof(*ttc), GFP_KERNEL);
732+
if (!ttc)
733+
return ERR_PTR(-ENOMEM);
734+
730735
ns = mlx5_get_flow_namespace(dev, params->ns_type);
736+
if (!ns) {
737+
kvfree(ttc);
738+
return ERR_PTR(-EOPNOTSUPP);
739+
}
740+
731741
groups = use_l4_type ? &ttc_groups[TTC_GROUPS_USE_L4_TYPE] :
732742
&ttc_groups[TTC_GROUPS_DEFAULT];
733743

0 commit comments

Comments
 (0)