From: Leon Romanovsky Date: Tue, 22 Sep 2020 09:11:02 +0000 (+0300) Subject: RDMA/cma: Delete from restrack DB after successful destroy X-Git-Tag: v5.15~2640^2~64 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=60aaeffa367c2ac72cac96edfd10452c613882f5;p=platform%2Fkernel%2Flinux-starfive.git RDMA/cma: Delete from restrack DB after successful destroy Update the code to have similar destroy pattern like other IB objects. This change create asymmetry to the rdma_id_private create flow to make sure that memory is managed by restrack. Link: https://lore.kernel.org/r/20200922091106.2152715-2-leon@kernel.org Signed-off-by: Leon Romanovsky Signed-off-by: Jason Gunthorpe --- diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index 22bd892..22f0b7c 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -1804,7 +1804,6 @@ static void _destroy_id(struct rdma_id_private *id_priv, { cma_cancel_operation(id_priv, state); - rdma_restrack_del(&id_priv->res); if (id_priv->cma_dev) { if (rdma_cap_ib_cm(id_priv->id.device, 1)) { if (id_priv->cm_id.ib) @@ -1830,6 +1829,7 @@ static void _destroy_id(struct rdma_id_private *id_priv, rdma_put_gid_attr(id_priv->id.route.addr.dev_addr.sgid_attr); put_net(id_priv->id.route.addr.dev_addr.net); + rdma_restrack_del(&id_priv->res); kfree(id_priv); } @@ -3721,7 +3721,6 @@ int rdma_bind_addr(struct rdma_cm_id *id, struct sockaddr *addr) return 0; err2: - rdma_restrack_del(&id_priv->res); if (id_priv->cma_dev) cma_release_dev(id_priv); err1: