| .. | .. |
|---|
| 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; |
|---|