.. | .. |
---|
225 | 225 | if (sdma_rb_node) { |
---|
226 | 226 | sdma_rb_node->refcount++; |
---|
227 | 227 | } else { |
---|
228 | | - int ret; |
---|
229 | | - |
---|
230 | 228 | sdma_rb_node = kmalloc(sizeof( |
---|
231 | 229 | struct qib_user_sdma_rb_node), GFP_KERNEL); |
---|
232 | 230 | if (!sdma_rb_node) |
---|
.. | .. |
---|
235 | 233 | sdma_rb_node->refcount = 1; |
---|
236 | 234 | sdma_rb_node->pid = current->pid; |
---|
237 | 235 | |
---|
238 | | - ret = qib_user_sdma_rb_insert(&qib_user_sdma_rb_root, |
---|
239 | | - sdma_rb_node); |
---|
240 | | - BUG_ON(ret == 0); |
---|
| 236 | + qib_user_sdma_rb_insert(&qib_user_sdma_rb_root, sdma_rb_node); |
---|
241 | 237 | } |
---|
242 | 238 | pq->sdma_rb_node = sdma_rb_node; |
---|
243 | 239 | |
---|
.. | .. |
---|
321 | 317 | * the caller can ignore this page. |
---|
322 | 318 | */ |
---|
323 | 319 | if (put) { |
---|
324 | | - put_page(page); |
---|
| 320 | + unpin_user_page(page); |
---|
325 | 321 | } else { |
---|
326 | 322 | /* coalesce case */ |
---|
327 | 323 | kunmap(page); |
---|
.. | .. |
---|
635 | 631 | kunmap(pkt->addr[i].page); |
---|
636 | 632 | |
---|
637 | 633 | if (pkt->addr[i].put_page) |
---|
638 | | - put_page(pkt->addr[i].page); |
---|
| 634 | + unpin_user_page(pkt->addr[i].page); |
---|
639 | 635 | else |
---|
640 | 636 | __free_page(pkt->addr[i].page); |
---|
641 | 637 | } else if (pkt->addr[i].kvaddr) { |
---|
.. | .. |
---|
674 | 670 | else |
---|
675 | 671 | j = npages; |
---|
676 | 672 | |
---|
677 | | - ret = get_user_pages_fast(addr, j, 0, pages); |
---|
| 673 | + ret = pin_user_pages_fast(addr, j, FOLL_LONGTERM, pages); |
---|
678 | 674 | if (ret != j) { |
---|
679 | 675 | i = 0; |
---|
680 | 676 | j = ret; |
---|
.. | .. |
---|
710 | 706 | /* if error, return all pages not managed by pkt */ |
---|
711 | 707 | free_pages: |
---|
712 | 708 | while (i < j) |
---|
713 | | - put_page(pages[i++]); |
---|
| 709 | + unpin_user_page(pages[i++]); |
---|
714 | 710 | |
---|
715 | 711 | done: |
---|
716 | 712 | return ret; |
---|