diff options
| -rw-r--r-- | drivers/infiniband/core/umem.c | 7 | ||||
| -rw-r--r-- | include/rdma/ib_umem.h | 1 |
2 files changed, 1 insertions, 7 deletions
diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c index 9a4e899d94b3..2b6c9b516070 100644 --- a/drivers/infiniband/core/umem.c +++ b/drivers/infiniband/core/umem.c | |||
| @@ -119,7 +119,6 @@ struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr, | |||
| 119 | umem->length = size; | 119 | umem->length = size; |
| 120 | umem->address = addr; | 120 | umem->address = addr; |
| 121 | umem->page_shift = PAGE_SHIFT; | 121 | umem->page_shift = PAGE_SHIFT; |
| 122 | umem->pid = get_task_pid(current, PIDTYPE_PID); | ||
| 123 | /* | 122 | /* |
| 124 | * We ask for writable memory if any of the following | 123 | * We ask for writable memory if any of the following |
| 125 | * access flags are set. "Local write" and "remote write" | 124 | * access flags are set. "Local write" and "remote write" |
| @@ -132,7 +131,6 @@ struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr, | |||
| 132 | IB_ACCESS_REMOTE_ATOMIC | IB_ACCESS_MW_BIND)); | 131 | IB_ACCESS_REMOTE_ATOMIC | IB_ACCESS_MW_BIND)); |
| 133 | 132 | ||
| 134 | if (access & IB_ACCESS_ON_DEMAND) { | 133 | if (access & IB_ACCESS_ON_DEMAND) { |
| 135 | put_pid(umem->pid); | ||
| 136 | ret = ib_umem_odp_get(context, umem, access); | 134 | ret = ib_umem_odp_get(context, umem, access); |
| 137 | if (ret) { | 135 | if (ret) { |
| 138 | kfree(umem); | 136 | kfree(umem); |
| @@ -148,7 +146,6 @@ struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr, | |||
| 148 | 146 | ||
| 149 | page_list = (struct page **) __get_free_page(GFP_KERNEL); | 147 | page_list = (struct page **) __get_free_page(GFP_KERNEL); |
| 150 | if (!page_list) { | 148 | if (!page_list) { |
| 151 | put_pid(umem->pid); | ||
| 152 | kfree(umem); | 149 | kfree(umem); |
| 153 | return ERR_PTR(-ENOMEM); | 150 | return ERR_PTR(-ENOMEM); |
| 154 | } | 151 | } |
| @@ -231,7 +228,6 @@ out: | |||
| 231 | if (ret < 0) { | 228 | if (ret < 0) { |
| 232 | if (need_release) | 229 | if (need_release) |
| 233 | __ib_umem_release(context->device, umem, 0); | 230 | __ib_umem_release(context->device, umem, 0); |
| 234 | put_pid(umem->pid); | ||
| 235 | kfree(umem); | 231 | kfree(umem); |
| 236 | } else | 232 | } else |
| 237 | current->mm->pinned_vm = locked; | 233 | current->mm->pinned_vm = locked; |
| @@ -274,8 +270,7 @@ void ib_umem_release(struct ib_umem *umem) | |||
| 274 | 270 | ||
| 275 | __ib_umem_release(umem->context->device, umem, 1); | 271 | __ib_umem_release(umem->context->device, umem, 1); |
| 276 | 272 | ||
| 277 | task = get_pid_task(umem->pid, PIDTYPE_PID); | 273 | task = get_pid_task(umem->context->tgid, PIDTYPE_PID); |
| 278 | put_pid(umem->pid); | ||
| 279 | if (!task) | 274 | if (!task) |
| 280 | goto out; | 275 | goto out; |
| 281 | mm = get_task_mm(task); | 276 | mm = get_task_mm(task); |
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 { | |||
| 48 | int writable; | 48 | int writable; |
| 49 | int hugetlb; | 49 | int hugetlb; |
| 50 | struct work_struct work; | 50 | struct work_struct work; |
| 51 | struct pid *pid; | ||
| 52 | struct mm_struct *mm; | 51 | struct mm_struct *mm; |
| 53 | unsigned long diff; | 52 | unsigned long diff; |
| 54 | struct ib_umem_odp *odp_data; | 53 | struct ib_umem_odp *odp_data; |
