2021-11-06 21:58:28

by Christophe JAILLET

[permalink] [raw]
Subject: [PATCH] net/mlx5: Fix some error handling paths in 'mlx5e_tc_add_fdb_flow()'

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 <[email protected]>
---
This patch is speculative, review with care.
---
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
index 835caa1c7b74..ff881307c744 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
@@ -1445,7 +1445,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;
}
}

@@ -1461,13 +1461,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),
@@ -1475,8 +1477,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;
}
--
2.30.2


2021-11-07 16:46:58

by Roi Dayan

[permalink] [raw]
Subject: Re: [PATCH] net/mlx5: Fix some error handling paths in 'mlx5e_tc_add_fdb_flow()'



On 2021-11-06 7:08 PM, Christophe JAILLET wrote:
> 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 <[email protected]>
> ---
> This patch is speculative, review with care.
> ---
> drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 14 +++++++++-----
> 1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
> index 835caa1c7b74..ff881307c744 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
> @@ -1445,7 +1445,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;
> }
> }
>
> @@ -1461,13 +1461,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),
> @@ -1475,8 +1477,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;
> }
>


thanks for catching this.

Reviewed-by: Roi Dayan <[email protected]>

2021-11-16 20:45:02

by Saeed Mahameed

[permalink] [raw]
Subject: Re: [PATCH] net/mlx5: Fix some error handling paths in 'mlx5e_tc_add_fdb_flow()'

On Sat, 2021-11-06 at 18:08 +0100, Christophe JAILLET wrote:
> 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 <[email protected]>
> ---
> This patch is speculative, review with care.
> ---

Applied to net-mlx5, Thanks !