diff options
author | Lidong Chen <jemmy858585@gmail.com> | 2018-05-08 16:50:16 +0800 |
---|---|---|
committer | Jason Gunthorpe <jgg@mellanox.com> | 2018-05-15 17:09:10 -0600 |
commit | 8e907ed4882714fd13cfe670681fc6cb5284c780 (patch) | |
tree | 5ce4bf10cbe8129f41020043768d3958eebb2eff /include/rdma/ib_umem.h | |
parent | 3d69191086fc87f202c79eb8873b9c82c2bb065a (diff) | |
download | lwn-8e907ed4882714fd13cfe670681fc6cb5284c780.tar.gz lwn-8e907ed4882714fd13cfe670681fc6cb5284c780.zip |
IB/umem: Use the correct mm during ib_umem_release
User-space may invoke ibv_reg_mr and ibv_dereg_mr in different threads.
If ibv_dereg_mr is called after the thread which invoked ibv_reg_mr has
exited, get_pid_task will return NULL and ib_umem_release will not
decrease mm->pinned_vm.
Instead of using threads to locate the mm, use the overall tgid from the
ib_ucontext struct instead. This matches the behavior of ODP and
disassociate in handling the mm of the process that called ibv_reg_mr.
Cc: <stable@vger.kernel.org>
Fixes: 87773dd56d54 ("IB: ib_umem_release() should decrement mm->pinned_vm from ib_umem_get")
Signed-off-by: Lidong Chen <lidongchen@tencent.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'include/rdma/ib_umem.h')
-rw-r--r-- | include/rdma/ib_umem.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/include/rdma/ib_umem.h b/include/rdma/ib_umem.h index 23159dd5be18..a1fd63871d17 100644 --- a/include/rdma/ib_umem.h +++ b/include/rdma/ib_umem.h @@ -48,7 +48,6 @@ struct ib_umem { int writable; int hugetlb; struct work_struct work; - struct pid *pid; struct mm_struct *mm; unsigned long diff; struct ib_umem_odp *odp_data; |