|
@@ -134,6 +134,7 @@ struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr,
|
|
|
IB_ACCESS_REMOTE_ATOMIC | IB_ACCESS_MW_BIND));
|
|
|
|
|
|
if (access & IB_ACCESS_ON_DEMAND) {
|
|
|
+ put_pid(umem->pid);
|
|
|
ret = ib_umem_odp_get(context, umem);
|
|
|
if (ret) {
|
|
|
kfree(umem);
|
|
@@ -149,6 +150,7 @@ struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr,
|
|
|
|
|
|
page_list = (struct page **) __get_free_page(GFP_KERNEL);
|
|
|
if (!page_list) {
|
|
|
+ put_pid(umem->pid);
|
|
|
kfree(umem);
|
|
|
return ERR_PTR(-ENOMEM);
|
|
|
}
|