regex/mlx5: fix leak on queue setup failure
authorMichael Baum <michaelba@nvidia.com>
Wed, 18 Nov 2020 17:00:11 +0000 (17:00 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Sun, 22 Nov 2020 14:05:54 +0000 (15:05 +0100)
In regex QP setup, the PMD creates some SQ objects.

When SQ object creation is failed, the previous SQ objects memory were
not freed what caused a memory leak.

Free them.

Fixes: 54fa1f6a67d7 ("regex/mlx5: add teardown for fastpath buffers")

Signed-off-by: Michael Baum <michaelba@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
drivers/regex/mlx5/mlx5_regex_control.c

index 88b3d1a..d6f452b 100644 (file)
@@ -336,6 +336,7 @@ mlx5_regex_qp_setup(struct rte_regexdev *dev, uint16_t qp_ind,
        struct mlx5_regex_priv *priv = dev->data->dev_private;
        struct mlx5_regex_qp *qp;
        int i;
+       int nb_sq_config = 0;
        int ret;
        uint16_t log_desc;
 
@@ -364,8 +365,9 @@ mlx5_regex_qp_setup(struct rte_regexdev *dev, uint16_t qp_ind,
                ret = regex_ctrl_create_sq(priv, qp, i, log_desc);
                if (ret) {
                        DRV_LOG(ERR, "Can't create sq.");
-                       goto err_sq;
+                       goto err_btree;
                }
+               nb_sq_config++;
        }
 
        ret = mlx5_mr_btree_init(&qp->mr_ctrl.cache_bh, MLX5_MR_BTREE_CACHE_N,
@@ -385,9 +387,8 @@ mlx5_regex_qp_setup(struct rte_regexdev *dev, uint16_t qp_ind,
 err_fp:
        mlx5_mr_btree_free(&qp->mr_ctrl.cache_bh);
 err_btree:
-       for (i = 0; i < qp->nb_obj; i++)
+       for (i = 0; i < nb_sq_config; i++)
                regex_ctrl_destroy_sq(priv, qp, i);
-err_sq:
        regex_ctrl_destroy_cq(priv, &qp->cq);
 err_cq:
        rte_free(qp->sqs);