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 <michae...@nvidia.com> Acked-by: Ori Kam <or...@nvidia.com> --- 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 88b3d1a..d6f452b 100644 --- a/drivers/regex/mlx5/mlx5_regex_control.c +++ b/drivers/regex/mlx5/mlx5_regex_control.c @@ -336,6 +336,7 @@ 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 @@ 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 @@ 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); -- 1.8.3.1