From: tuqiang tu.qiang35@zte.com.cn
The MR/QP restrack also needs to be released when delete it, otherwise it cause memory leak as the task struct won't be released.
This problem has been fixed by the commit <dac153f2802d> ("RDMA/restrack: Release MR restrack when delete"), but still exists in the linux-5.10.y branch.
Fixes: 13ef5539def7 ("RDMA/restrack: Count references to the verbs objects") Signed-off-by: tuqiang tu.qiang35@zte.com.cn Signed-off-by: Jiang Kun jiang.kun2@zte.com.cn Cc: stable@vger.kernel.org Cc: xu xin xu.xin16@zte.com.cn Cc: Doug Ledford dledford@redhat.com Cc: Jason Gunthorpe jgg@ziepe.ca Cc: Leon Romanovsky leon@kernel.org --- drivers/infiniband/core/restrack.c | 2 -- 1 file changed, 2 deletions(-)
diff --git a/drivers/infiniband/core/restrack.c b/drivers/infiniband/core/restrack.c index bbbbec5b1593..d5a69c4a1891 100644 --- a/drivers/infiniband/core/restrack.c +++ b/drivers/infiniband/core/restrack.c @@ -326,8 +326,6 @@ void rdma_restrack_del(struct rdma_restrack_entry *res) rt = &dev->res[res->type];
old = xa_erase(&rt->xa, res->id); - if (res->type == RDMA_RESTRACK_MR || res->type == RDMA_RESTRACK_QP) - return; WARN_ON(old != res); res->valid = false;