From a165ee1ec1750ba9e21ad8f8d22a48722449390f Mon Sep 17 00:00:00 2001 From: Michael Baum Date: Wed, 18 Nov 2020 17:00:11 +0000 Subject: [PATCH] regex/mlx5: fix leak on queue setup failure 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 Acked-by: Ori Kam --- drivers/regex/mlx5/mlx5_regex_control.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/regex/mlx5/mlx5_regex_control.c b/drivers/regex/mlx5/mlx5_regex_control.c index 88b3d1a0d2..d6f452bb6b 100644 --- a/drivers/regex/mlx5/mlx5_regex_control.c +++ b/drivers/regex/mlx5/mlx5_regex_control.c @@ -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); -- 2.20.1