In crypto driver probing, there are two validations after context
allocation.

When one of them fails, the context structure was not freed what caused
a memory leak.

Free it.

Fixes: debb27ea3442 ("crypto/mlx5: create login object using DevX")
Fixes: e8db4413cba5 ("crypto/mlx5: add keytag configuration")
Cc: sta...@dpdk.org

Signed-off-by: Michael Baum <michae...@nvidia.com>
Acked-by: Matan Azrad <ma...@nvidia.com>
---
 drivers/crypto/mlx5/mlx5_crypto.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/crypto/mlx5/mlx5_crypto.c 
b/drivers/crypto/mlx5/mlx5_crypto.c
index ea734f4d5c..b3d5200ca3 100644
--- a/drivers/crypto/mlx5/mlx5_crypto.c
+++ b/drivers/crypto/mlx5/mlx5_crypto.c
@@ -1021,12 +1021,14 @@ mlx5_crypto_dev_probe(struct rte_device *dev)
        ret = mlx5_crypto_parse_devargs(dev->devargs, &devarg_prms);
        if (ret) {
                DRV_LOG(ERR, "Failed to parse devargs.");
+               claim_zero(mlx5_glue->close_device(ctx));
                return -rte_errno;
        }
        login = mlx5_devx_cmd_create_crypto_login_obj(ctx,
                                                      &devarg_prms.login_attr);
        if (login == NULL) {
                DRV_LOG(ERR, "Failed to configure login.");
+               claim_zero(mlx5_glue->close_device(ctx));
                return -rte_errno;
        }
        crypto_dev = rte_cryptodev_pmd_create(ibv->name, dev,
-- 
2.25.1

Reply via email to