*/
        if (node_is_toptier(nid))
                last_cpupid = page_cpupid_last(&folio->page);
-       target_nid = numa_migrate_prep(&folio->page, vma, haddr, nid, &flags);
+       target_nid = numa_migrate_prep(folio, vma, haddr, nid, &flags);
        if (target_nid == NUMA_NO_NODE) {
                folio_put(folio);
                goto out_map;
 
 
 void __vunmap_range_noflush(unsigned long start, unsigned long end);
 
-int numa_migrate_prep(struct page *page, struct vm_area_struct *vma,
+int numa_migrate_prep(struct folio *folio, struct vm_area_struct *vma,
                      unsigned long addr, int page_nid, int *flags);
 
 void free_zone_device_page(struct page *page);
 
        return ret;
 }
 
-int numa_migrate_prep(struct page *page, struct vm_area_struct *vma,
+int numa_migrate_prep(struct folio *folio, struct vm_area_struct *vma,
                      unsigned long addr, int page_nid, int *flags)
 {
-       get_page(page);
+       folio_get(folio);
 
        /* Record the current PID acceesing VMA */
        vma_set_access_pid_bit(vma);
                *flags |= TNF_FAULT_LOCAL;
        }
 
-       return mpol_misplaced(page, vma, addr);
+       return mpol_misplaced(&folio->page, vma, addr);
 }
 
 static vm_fault_t do_numa_page(struct vm_fault *vmf)
                last_cpupid = (-1 & LAST_CPUPID_MASK);
        else
                last_cpupid = page_cpupid_last(&folio->page);
-       target_nid = numa_migrate_prep(&folio->page, vma, vmf->address, nid,
-                                      &flags);
+       target_nid = numa_migrate_prep(folio, vma, vmf->address, nid, &flags);
        if (target_nid == NUMA_NO_NODE) {
                folio_put(folio);
                goto out_map;