]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
net/mlx5: Fix some error handling paths in 'mlx5e_tc_add_fdb_flow()'
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sat, 6 Nov 2021 17:08:11 +0000 (18:08 +0100)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 26 Aug 2022 08:54:30 +0000 (10:54 +0200)
BugLink: https://bugs.launchpad.net/bugs/1983498
All the error handling paths of 'mlx5e_tc_add_fdb_flow()' end to 'err_out'
where 'flow_flag_set(flow, FAILED);' is called.

All but the new error handling paths added by the commits given in the
Fixes tag below.

Fix these error handling paths and branch to 'err_out'.

Fixes: 166f431ec6be ("net/mlx5e: Add indirect tc offload of ovs internal port")
Fixes: b16eb3c81fe2 ("net/mlx5: Support internal port as decap route device")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
(cherry picked from commit 31108d142f3632970f6f3e0224bd1c6781c9f87d)
(cherry picked from commit 4390c6edc0fb390e699d0f886f45575dfeafeb4b)
Signed-off-by: Zachary Tahenakos <zachary.tahenakos@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
Acked-by: Tim Gardner <tim.gardner@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c

index c08f58375f10b3d96346ce2cd33a47a19f088c0b..180da8afce6cabfe3d962145c2aae5b69d0a1b23 100644 (file)
@@ -1439,7 +1439,7 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv,
                                                        MLX5_FLOW_NAMESPACE_FDB, VPORT_TO_REG,
                                                        metadata);
                        if (err)
-                               return err;
+                               goto err_out;
                }
        }
 
@@ -1455,13 +1455,15 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv,
                if (attr->chain) {
                        NL_SET_ERR_MSG_MOD(extack,
                                           "Internal port rule is only supported on chain 0");
-                       return -EOPNOTSUPP;
+                       err = -EOPNOTSUPP;
+                       goto err_out;
                }
 
                if (attr->dest_chain) {
                        NL_SET_ERR_MSG_MOD(extack,
                                           "Internal port rule offload doesn't support goto action");
-                       return -EOPNOTSUPP;
+                       err = -EOPNOTSUPP;
+                       goto err_out;
                }
 
                int_port = mlx5e_tc_int_port_get(mlx5e_get_int_port_priv(priv),
@@ -1469,8 +1471,10 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv,
                                                 flow_flag_test(flow, EGRESS) ?
                                                 MLX5E_TC_INT_PORT_EGRESS :
                                                 MLX5E_TC_INT_PORT_INGRESS);
-               if (IS_ERR(int_port))
-                       return PTR_ERR(int_port);
+               if (IS_ERR(int_port)) {
+                       err = PTR_ERR(int_port);
+                       goto err_out;
+               }
 
                esw_attr->int_port = int_port;
        }