aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/core/umem.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/core/umem.c')
-rw-r--r--drivers/infiniband/core/umem.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
index 1e62a5f0cb28..4609b921f899 100644
--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -134,6 +134,7 @@ struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr,
134 IB_ACCESS_REMOTE_ATOMIC | IB_ACCESS_MW_BIND)); 134 IB_ACCESS_REMOTE_ATOMIC | IB_ACCESS_MW_BIND));
135 135
136 if (access & IB_ACCESS_ON_DEMAND) { 136 if (access & IB_ACCESS_ON_DEMAND) {
137 put_pid(umem->pid);
137 ret = ib_umem_odp_get(context, umem); 138 ret = ib_umem_odp_get(context, umem);
138 if (ret) { 139 if (ret) {
139 kfree(umem); 140 kfree(umem);
@@ -149,6 +150,7 @@ struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr,
149 150
150 page_list = (struct page **) __get_free_page(GFP_KERNEL); 151 page_list = (struct page **) __get_free_page(GFP_KERNEL);
151 if (!page_list) { 152 if (!page_list) {
153 put_pid(umem->pid);
152 kfree(umem); 154 kfree(umem);
153 return ERR_PTR(-ENOMEM); 155 return ERR_PTR(-ENOMEM);
154 } 156 }