]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
mm: Add folio_mk_pte()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Fri, 31 Jan 2025 11:38:17 +0000 (06:38 -0500)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 25 Feb 2025 19:47:20 +0000 (14:47 -0500)
Removes a cast from folio to page in four callers of mk_pte().

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
include/linux/mm.h
mm/memory.c
mm/userfaultfd.c

index 62dccde9c5612399ece130b446da9bce16095803..b1e311bae6b712ab4da36c9b81f9f25eae3ffa62 100644 (file)
@@ -1921,6 +1921,21 @@ static inline pte_t mk_pte(struct page *page, pgprot_t pgprot)
 {
        return pfn_pte(page_to_pfn(page), pgprot);
 }
+
+/**
+ * folio_mk_pte - Create a PTE for this folio
+ * @folio: The folio to create a PTE for
+ * @pgprot: The page protection bits to use
+ *
+ * Create a page table entry for the first page of this folio.
+ * This is suitable for passing to set_ptes().
+ *
+ * Return: A page table entry suitable for mapping this folio.
+ */
+static inline pte_t folio_mk_pte(struct folio *folio, pgprot_t pgprot)
+{
+       return pfn_pte(folio_pfn(folio), pgprot);
+}
 #endif
 
 /**
index 7650e1793a6c6fd79d9bf383b9e6f7d0e1d687b7..ea5a58db76ddf1b5f4ee1c93e8a98e1b4e69ab54 100644 (file)
@@ -936,7 +936,7 @@ copy_present_page(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma
        rss[MM_ANONPAGES]++;
 
        /* All done, just insert the new page copy in the child */
-       pte = mk_pte(&new_folio->page, dst_vma->vm_page_prot);
+       pte = folio_mk_pte(new_folio, dst_vma->vm_page_prot);
        pte = maybe_mkwrite(pte_mkdirty(pte), dst_vma);
        if (userfaultfd_pte_wp(dst_vma, ptep_get(src_pte)))
                /* Uffd-wp needs to be delivered to dest pte as well */
@@ -3491,7 +3491,7 @@ static vm_fault_t wp_page_copy(struct vm_fault *vmf)
                        inc_mm_counter(mm, MM_ANONPAGES);
                }
                flush_cache_page(vma, vmf->address, pte_pfn(vmf->orig_pte));
-               entry = mk_pte(&new_folio->page, vma->vm_page_prot);
+               entry = folio_mk_pte(new_folio, vma->vm_page_prot);
                entry = pte_sw_mkyoung(entry);
                if (unlikely(unshare)) {
                        if (pte_soft_dirty(vmf->orig_pte))
@@ -4903,7 +4903,7 @@ static vm_fault_t do_anonymous_page(struct vm_fault *vmf)
         */
        __folio_mark_uptodate(folio);
 
-       entry = mk_pte(&folio->page, vma->vm_page_prot);
+       entry = folio_mk_pte(folio, vma->vm_page_prot);
        entry = pte_sw_mkyoung(entry);
        if (vma->vm_flags & VM_WRITE)
                entry = pte_mkwrite(pte_mkdirty(entry), vma);
index af3dfc3633dbec5ee01d9977c73bd8740799bfef..507a9e3caec71542f1d29918a5760906331e5719 100644 (file)
@@ -1066,7 +1066,7 @@ static int move_present_pte(struct mm_struct *mm,
        folio_move_anon_rmap(src_folio, dst_vma);
        src_folio->index = linear_page_index(dst_vma, dst_addr);
 
-       orig_dst_pte = mk_pte(&src_folio->page, dst_vma->vm_page_prot);
+       orig_dst_pte = folio_mk_pte(src_folio, dst_vma->vm_page_prot);
        /* Follow mremap() behavior and treat the entry dirty after the move */
        orig_dst_pte = pte_mkwrite(pte_mkdirty(orig_dst_pte), dst_vma);