hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/infiniband/hw/qib/qib_user_sdma.c
....@@ -225,8 +225,6 @@
225225 if (sdma_rb_node) {
226226 sdma_rb_node->refcount++;
227227 } else {
228
- int ret;
229
-
230228 sdma_rb_node = kmalloc(sizeof(
231229 struct qib_user_sdma_rb_node), GFP_KERNEL);
232230 if (!sdma_rb_node)
....@@ -235,9 +233,7 @@
235233 sdma_rb_node->refcount = 1;
236234 sdma_rb_node->pid = current->pid;
237235
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);
241237 }
242238 pq->sdma_rb_node = sdma_rb_node;
243239
....@@ -321,7 +317,7 @@
321317 * the caller can ignore this page.
322318 */
323319 if (put) {
324
- put_page(page);
320
+ unpin_user_page(page);
325321 } else {
326322 /* coalesce case */
327323 kunmap(page);
....@@ -635,7 +631,7 @@
635631 kunmap(pkt->addr[i].page);
636632
637633 if (pkt->addr[i].put_page)
638
- put_page(pkt->addr[i].page);
634
+ unpin_user_page(pkt->addr[i].page);
639635 else
640636 __free_page(pkt->addr[i].page);
641637 } else if (pkt->addr[i].kvaddr) {
....@@ -674,7 +670,7 @@
674670 else
675671 j = npages;
676672
677
- ret = get_user_pages_fast(addr, j, 0, pages);
673
+ ret = pin_user_pages_fast(addr, j, FOLL_LONGTERM, pages);
678674 if (ret != j) {
679675 i = 0;
680676 j = ret;
....@@ -710,7 +706,7 @@
710706 /* if error, return all pages not managed by pkt */
711707 free_pages:
712708 while (i < j)
713
- put_page(pages[i++]);
709
+ unpin_user_page(pages[i++]);
714710
715711 done:
716712 return ret;