On Mon, Apr 08, 2024 at 10:47:12AM -0700, Vishal Moola wrote: > -static vm_fault_t hugetlb_wp(struct mm_struct *mm, struct vm_area_struct *vma, > - struct folio *pagecache_folio, > +static vm_fault_t hugetlb_wp(struct folio *pagecache_folio, > struct vm_fault *vmf) > { > + struct vm_area_struct *vma = vmf->vma; > + struct mm_struct *mm = vma->vm_mm; I think 'vmf' should be the first parameter, not the second. Compare: static vm_fault_t do_page_mkwrite(struct vm_fault *vmf, struct folio *folio) static inline void wp_page_reuse(struct vm_fault *vmf, struct folio *folio) static vm_fault_t finish_mkwrite_fault(struct vm_fault *vmf, struct folio *folio) static vm_fault_t wp_page_shared(struct vm_fault *vmf, struct folio *folio) vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page) void set_pte_range(struct vm_fault *vmf, struct folio *folio, struct page *page, unsigned int nr, unsigned long addr) int numa_migrate_prep(struct folio *folio, struct vm_fault *vmf, unsigned long addr, int page_nid, int *flags) static void numa_rebuild_single_mapping(struct vm_fault *vmf, struct vm_area_struct *vma, unsigned long fault_addr, pte_t *fault_pte, bool writable) static void numa_rebuild_large_mapping(struct vm_fault *vmf, struct vm_area_struct *vma, struct folio *folio, pte_t fault_pte, bool ignore_writable, bool pte_write_upgrade) static vm_fault_t wp_huge_pud(struct vm_fault *vmf, pud_t orig_pud) numa_migrate_prep() is the only one which doesn't have vmf as the first param. It's a subtle inconsistency, but one you notice after a while ... then wish you'd done right the first time, but can't quite bring yourself to submit a patch to fix ;-)