hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/infiniband/hw/mthca/mthca_memfree.c
....@@ -58,7 +58,7 @@
5858 u64 uvirt;
5959 struct scatterlist mem;
6060 int refcount;
61
- } page[0];
61
+ } page[];
6262 };
6363
6464 static void mthca_free_icm_pages(struct mthca_dev *dev, struct mthca_icm_chunk *chunk)
....@@ -472,7 +472,8 @@
472472 goto out;
473473 }
474474
475
- ret = get_user_pages_fast(uaddr & PAGE_MASK, 1, FOLL_WRITE, pages);
475
+ ret = pin_user_pages_fast(uaddr & PAGE_MASK, 1,
476
+ FOLL_WRITE | FOLL_LONGTERM, pages);
476477 if (ret < 0)
477478 goto out;
478479
....@@ -481,7 +482,7 @@
481482
482483 ret = pci_map_sg(dev->pdev, &db_tab->page[i].mem, 1, PCI_DMA_TODEVICE);
483484 if (ret < 0) {
484
- put_page(pages[0]);
485
+ unpin_user_page(pages[0]);
485486 goto out;
486487 }
487488
....@@ -489,7 +490,7 @@
489490 mthca_uarc_virt(dev, uar, i));
490491 if (ret) {
491492 pci_unmap_sg(dev->pdev, &db_tab->page[i].mem, 1, PCI_DMA_TODEVICE);
492
- put_page(sg_page(&db_tab->page[i].mem));
493
+ unpin_user_page(sg_page(&db_tab->page[i].mem));
493494 goto out;
494495 }
495496
....@@ -555,7 +556,7 @@
555556 if (db_tab->page[i].uvirt) {
556557 mthca_UNMAP_ICM(dev, mthca_uarc_virt(dev, uar, i), 1);
557558 pci_unmap_sg(dev->pdev, &db_tab->page[i].mem, 1, PCI_DMA_TODEVICE);
558
- put_page(sg_page(&db_tab->page[i].mem));
559
+ unpin_user_page(sg_page(&db_tab->page[i].mem));
559560 }
560561 }
561562
....@@ -623,8 +624,9 @@
623624 page = dev->db_tab->page + end;
624625
625626 alloc:
626
- page->db_rec = dma_zalloc_coherent(&dev->pdev->dev, MTHCA_ICM_PAGE_SIZE,
627
- &page->mapping, GFP_KERNEL);
627
+ page->db_rec = dma_alloc_coherent(&dev->pdev->dev,
628
+ MTHCA_ICM_PAGE_SIZE, &page->mapping,
629
+ GFP_KERNEL);
628630 if (!page->db_rec) {
629631 ret = -ENOMEM;
630632 goto out;