Thread (2 messages) 2 messages, 2 authors, 2021-12-31
STALE1667d

[PATCH] net/mlx5: Add vport return value checks

From: Zizhuang Deng <hidden>
Date: 2021-12-30 05:26:40
Also in: linux-rdma, lkml
Subsystem: mellanox mlx5 core vpi driver, networking drivers, the rest · Maintainers: Saeed Mahameed, Leon Romanovsky, Tariq Toukan, Mark Bloch, Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds

add missing vport return value checks for recent code, as in [1].

Ref:
[1] https://lkml.org/lkml/2020/11/1/315

Signed-off-by: Zizhuang Deng <redacted>
---
 .../mellanox/mlx5/core/eswitch_offloads.c     | 20 +++++++++++++++++++
 1 file changed, 20 insertions(+)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
index f4eaa5893886..fda214021738 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
@@ -1230,6 +1230,8 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
 
 	if (mlx5_core_is_ecpf_esw_manager(esw->dev)) {
 		vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_PF);
+		if (IS_ERR(vport))
+			return PTR_ERR(vport);
 		esw_set_peer_miss_rule_source_port(esw, peer_dev->priv.eswitch,
 						   spec, MLX5_VPORT_PF);
 
@@ -1244,6 +1246,8 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
 
 	if (mlx5_ecpf_vport_exists(esw->dev)) {
 		vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_ECPF);
+		if (IS_ERR(vport))
+			return PTR_ERR(vport);
 		MLX5_SET(fte_match_set_misc, misc, source_port, MLX5_VPORT_ECPF);
 		flow = mlx5_add_flow_rules(esw->fdb_table.offloads.slow_fdb,
 					   spec, &flow_act, &dest, 1);
@@ -1281,11 +1285,15 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
 	}
 	if (mlx5_ecpf_vport_exists(esw->dev)) {
 		vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_ECPF);
+		if (IS_ERR(vport))
+			return PTR_ERR(vport);
 		mlx5_del_flow_rules(flows[vport->index]);
 	}
 add_ecpf_flow_err:
 	if (mlx5_core_is_ecpf_esw_manager(esw->dev)) {
 		vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_PF);
+		if (IS_ERR(vport))
+			return PTR_ERR(vport);
 		mlx5_del_flow_rules(flows[vport->index]);
 	}
 add_pf_flow_err:
@@ -1309,11 +1317,15 @@ static void esw_del_fdb_peer_miss_rules(struct mlx5_eswitch *esw)
 
 	if (mlx5_ecpf_vport_exists(esw->dev)) {
 		vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_ECPF);
+		if (IS_ERR(vport))
+			return;
 		mlx5_del_flow_rules(flows[vport->index]);
 	}
 
 	if (mlx5_core_is_ecpf_esw_manager(esw->dev)) {
 		vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_PF);
+		if (IS_ERR(vport))
+			return;
 		mlx5_del_flow_rules(flows[vport->index]);
 	}
 	kvfree(flows);
@@ -2385,6 +2397,9 @@ static int esw_set_uplink_slave_ingress_root(struct mlx5_core_dev *master,
 	if (master) {
 		esw = master->priv.eswitch;
 		vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_UPLINK);
+		if (IS_ERR(vport))
+			return PTR_ERR(vport);
+
 		MLX5_SET(set_flow_table_root_in, in, table_of_other_vport, 1);
 		MLX5_SET(set_flow_table_root_in, in, table_vport_number,
 			 MLX5_VPORT_UPLINK);
@@ -2405,6 +2420,9 @@ static int esw_set_uplink_slave_ingress_root(struct mlx5_core_dev *master,
 	} else {
 		esw = slave->priv.eswitch;
 		vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_UPLINK);
+		if (IS_ERR(vport))
+			return PTR_ERR(vport);
+
 		ns = mlx5_get_flow_vport_acl_namespace(slave,
 						       MLX5_FLOW_NAMESPACE_ESW_INGRESS,
 						       vport->index);
@@ -2590,6 +2608,8 @@ static void esw_unset_master_egress_rule(struct mlx5_core_dev *dev)
 
 	vport = mlx5_eswitch_get_vport(dev->priv.eswitch,
 				       dev->priv.eswitch->manager_vport);
+	if (IS_ERR(vport))
+		return;
 
 	esw_acl_egress_ofld_cleanup(vport);
 }
-- 
2.25.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help