net/mlx5: fix DevX resources memory management.
PATCH 1/1 net/mlx5: fix DevX resources memory management.
Invalid memory release order of DevX resources caused PMD crash.
1. SQ and CQ memory must be unregistered with DevX before it is freed.
2. SQ objects reference to a CQ ones. Hence, SQ should be destroyed in advance of CQ it references to.
module")
--- drivers/net/mlx5/mlx5_devx.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
drivers/net/mlx5/mlx5_devx.c +9 -9
@@ -154,14 +154,14 @@ mlx5_rxq_release_devx_rq_resources(struct mlx5_rxq_ctrl *rxq_ctrl) {struct mlx5_devx_dbr_page *dbr_page = rxq_ctrl->rq_dbrec_page; -if (rxq_ctrl->rxq.wqes) { -mlx5_free ((void *)(uintptr_t )rxq_ctrl->rxq.wqes); - rxq_ctrl->rxq.wqes =NULL ; - }if (rxq_ctrl->wq_umem) { mlx5_glue->devx_umem_dereg (rxq_ctrl->wq_umem); rxq_ctrl->wq_umem =NULL ; } +if (rxq_ctrl->rxq.wqes) { +mlx5_free ((void *)(uintptr_t )rxq_ctrl->rxq.wqes); + rxq_ctrl->rxq.wqes =NULL ; + }if (dbr_page) { claim_zero(mlx5_release_dbr(&rxq_ctrl->priv->dbrpgs, mlx5_os_get_umem_id(dbr_page->umem),
@@ -181,14 +181,14 @@ mlx5_rxq_release_devx_cq_resources(struct mlx5_rxq_ctrl *rxq_ctrl) {struct mlx5_devx_dbr_page *dbr_page = rxq_ctrl->cq_dbrec_page; -if (rxq_ctrl->rxq.cqes) { -rte_free ((void *)(uintptr_t )rxq_ctrl->rxq.cqes); - rxq_ctrl->rxq.cqes =NULL ; - }if (rxq_ctrl->cq_umem) { mlx5_glue->devx_umem_dereg (rxq_ctrl->cq_umem); rxq_ctrl->cq_umem =NULL ; } +if (rxq_ctrl->rxq.cqes) { +rte_free ((void *)(uintptr_t )rxq_ctrl->rxq.cqes); + rxq_ctrl->rxq.cqes =NULL ; + }if (dbr_page) { claim_zero(mlx5_release_dbr(&rxq_ctrl->priv->dbrpgs, mlx5_os_get_umem_id(dbr_page->umem),
@@ -1174,8 +1174,8 @@ mlx5_txq_release_devx_cq_resources(struct mlx5_txq_obj *txq_obj)static void mlx5_txq_release_devx_resources (struct mlx5_txq_obj *txq_obj) { -mlx5_txq_release_devx_cq_resources (txq_obj);mlx5_txq_release_devx_sq_resources (txq_obj); +mlx5_txq_release_devx_cq_resources (txq_obj); }/**
Signature · 1 line
2.29.2
From: Gregory Etelson
Quoted 6 lines
Invalid memory release order of DevX resources caused PMD crash.
1. SQ and CQ memory must be unregistered with DevX before it is freed.
2. SQ objects reference to a CQ ones. Hence, SQ should be destroyed in advance of CQ it references to.
Quoted 6 lines
Fixes 6deb19e1b2d2 ("net/mlx5: separate Rx queue object creations")Fixes 88f2e3f18cc7 ("net/mlx5: rearrange SQ and CQ creation in DevXmodule")
Signed-off-by Gregory Etelson <[email protected]>
Thomas Monjalon
AppliedQuoted 6 lines
Quoted 6 lines
Invalid memory release order of DevX resources caused PMD crash.
1. SQ and CQ memory must be unregistered with DevX before it is freed.
2. SQ objects reference to a CQ ones. Hence, SQ should be destroyed in advance of CQ it references to.
Quoted 7 lines
Quoted 6 lines
Fixes 6deb19e1b2d2 ("net/mlx5: separate Rx queue object creations")Fixes 88f2e3f18cc7 ("net/mlx5: rearrange SQ and CQ creation in DevXmodule")
Signed-off-by Gregory Etelson <[email protected]>Acked-by Matan Azrad <[email protected]>
Applied, thanks