OSDN Git Service

RDMA/odp: Fix leaking the tgid for implicit ODP
authorJason Gunthorpe <jgg@mellanox.com>
Wed, 4 Mar 2020 18:16:07 +0000 (14:16 -0400)
committerJason Gunthorpe <jgg@mellanox.com>
Tue, 10 Mar 2020 17:29:07 +0000 (14:29 -0300)
The tgid used to be part of ib_umem_free_notifier(), when it was reworked
it got moved to release, but it should have been unconditional as all umem
alloc paths get the tgid.

As is, creating an implicit ODP will leak the tgid reference.

Link: https://lore.kernel.org/r/20200304181607.GA22412@ziepe.ca
Cc: stable@kernel.org
Fixes: f25a546e6529 ("RDMA/odp: Use mmu_interval_notifier_insert()")
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/umem_odp.c

index cd656ad..3b1e627 100644 (file)
@@ -275,8 +275,8 @@ void ib_umem_odp_release(struct ib_umem_odp *umem_odp)
                mmu_interval_notifier_remove(&umem_odp->notifier);
                kvfree(umem_odp->dma_list);
                kvfree(umem_odp->page_list);
-               put_pid(umem_odp->tgid);
        }
+       put_pid(umem_odp->tgid);
        kfree(umem_odp);
 }
 EXPORT_SYMBOL(ib_umem_odp_release);