regex/mlx5: fix leak after probing failure
[dpdk.git] / drivers / regex / mlx5 / mlx5_regex.c
index 84ba2e5..8866a4d 100644 (file)
@@ -171,7 +171,7 @@ mlx5_regex_dev_probe(struct rte_device *rte_dev)
                                            MLX5_RXP_CSR_IDENTIFIER, &val);
        if (ret) {
                DRV_LOG(ERR, "CSR read failed!");
-               return -1;
+               goto dev_error;
        }
        if (val == MLX5_RXP_BF2_IDENTIFIER)
                priv->is_bf2 = 1;
@@ -272,6 +272,8 @@ mlx5_regex_dev_remove(struct rte_device *rte_dev)
                if (TAILQ_EMPTY(&mlx5_mem_event_list))
                        rte_mem_event_callback_unregister("MLX5_MEM_EVENT_CB",
                                                          NULL);
+               if (priv->mr_scache.cache.table)
+                       mlx5_mr_release_cache(&priv->mr_scache);
                if (priv->pd)
                        mlx5_glue->dealloc_pd(priv->pd);
                if (priv->uar)
@@ -280,8 +282,6 @@ mlx5_regex_dev_remove(struct rte_device *rte_dev)
                        rte_regexdev_unregister(priv->regexdev);
                if (priv->ctx)
                        mlx5_glue->close_device(priv->ctx);
-               if (priv->regexdev)
-                       rte_regexdev_unregister(priv->regexdev);
                rte_free(priv);
        }
        return 0;