From: Yongseok Koh Date: Mon, 23 Jul 2018 18:27:44 +0000 (-0700) Subject: net/mlx5: fix endless loop when clearing flow flags X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=c20d4a70caa5c64520addae5f2e867f911b3aa18;p=dpdk.git net/mlx5: fix endless loop when clearing flow flags If one of (*priv->rxqs)[] is null, the for loop can iterate infinitely as idx can't be increased. Fixes: cd24d526395e ("net/mlx5: add mark/flag flow action") Signed-off-by: Yongseok Koh Acked-by: Ori Kam Acked-by: Nelio Laranjeiro --- diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index 32854198b9..c156f01ebd 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -2762,22 +2762,20 @@ mlx5_flow_rxq_flags_clear(struct rte_eth_dev *dev) { struct priv *priv = dev->data->dev_private; unsigned int i; - unsigned int idx; - for (idx = 0, i = 0; idx != priv->rxqs_n; ++i) { + for (i = 0; i != priv->rxqs_n; ++i) { struct mlx5_rxq_ctrl *rxq_ctrl; unsigned int j; - if (!(*priv->rxqs)[idx]) + if (!(*priv->rxqs)[i]) continue; - rxq_ctrl = container_of((*priv->rxqs)[idx], + rxq_ctrl = container_of((*priv->rxqs)[i], struct mlx5_rxq_ctrl, rxq); rxq_ctrl->flow_mark_n = 0; rxq_ctrl->rxq.mark = 0; for (j = 0; j != MLX5_FLOW_TUNNEL; ++j) rxq_ctrl->flow_tunnels_n[j] = 0; rxq_ctrl->rxq.tunnel = 0; - ++idx; } }