summaryrefslogtreecommitdiffstats
path: root/include/rdma/ib_umem.h
diff options
context:
space:
mode:
authorLidong Chen <jemmy858585@gmail.com>2018-05-08 10:50:16 +0200
committerJason Gunthorpe <jgg@mellanox.com>2018-05-16 01:09:10 +0200
commit8e907ed4882714fd13cfe670681fc6cb5284c780 (patch)
tree5ce4bf10cbe8129f41020043768d3958eebb2eff /include/rdma/ib_umem.h
parentiw_cxgb4: Fix an error handling path in 'c4iw_get_dma_mr()' (diff)
downloadlinux-8e907ed4882714fd13cfe670681fc6cb5284c780.tar.xz
linux-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.h1
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;