]> www.infradead.org Git - linux-platform-drivers-x86.git/commitdiff
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 cd656ad4953bfce4d8d3efabb34b6794662132c0..3b1e627d9a8dd5413289700dd1a88e3a3f9d07f4 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);