diff mbox series

[for-rc] RDMA/odp: Fix leaking the tgid for implicit ODP

Message ID 20200304181607.GA22412@ziepe.ca (mailing list archive)
State Mainlined
Commit 0f9826f4753f74f935e18c2a640484ecbd941346
Delegated to: Jason Gunthorpe
Headers show
Series [for-rc] RDMA/odp: Fix leaking the tgid for implicit ODP | expand

Commit Message

Jason Gunthorpe March 4, 2020, 6:16 p.m. UTC
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.

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 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jason Gunthorpe March 10, 2020, 5:30 p.m. UTC | #1
On Wed, Mar 04, 2020 at 02:16:07PM -0400, Jason Gunthorpe wrote:
> 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.
> 
> 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 | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Applied to for-rc

Jason
diff mbox series

Patch

diff --git a/drivers/infiniband/core/umem_odp.c b/drivers/infiniband/core/umem_odp.c
index cd656ad4953bfc..3b1e627d9a8dd5 100644
--- a/drivers/infiniband/core/umem_odp.c
+++ b/drivers/infiniband/core/umem_odp.c
@@ -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);