On Mon, Nov 07, 2022 at 10:51:34AM +0200, Leon Romanovsky wrote: > From: Mark Zhang <markzhang@xxxxxxxxxx> > > The MR restrack also needs to be released when delete it, otherwise it > cause memory leak as the task struct won't be released. > > Fixes: 13ef5539def7 ("RDMA/restrack: Count references to the verbs objects") > Signed-off-by: Mark Zhang <markzhang@xxxxxxxxxx> > Reviewed-by: Michael Guralnik <michaelgur@xxxxxxxxxx> > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxx> > --- > 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 1f935d9f6178..01a499a8b88d 100644 > --- a/drivers/infiniband/core/restrack.c > +++ b/drivers/infiniband/core/restrack.c > @@ -343,8 +343,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) > - return; This needs more explanation, there was some good reason we needed to avoid the wait_for_completion() for the driver allocated objects, but I can't remember it anymore. You added this code in the v2 of the original series, maybe it had something to do with mlx4? Jason