On Thu, 6 Apr 2023 at 09:40, Muhammad Usama Anjum <usama.anjum@xxxxxxxxxxxxx> wrote: [...] > --- a/fs/proc/task_mmu.c > +++ b/fs/proc/task_mmu.c [...] > +static int pagemap_scan_pmd_entry(pmd_t *pmd, unsigned long start, > + unsigned long end, struct mm_walk *walk) > +{ > + struct pagemap_scan_private *p = walk->private; > + bool is_written, is_file, is_present, is_swap; > + struct vm_area_struct *vma = walk->vma; > + unsigned long addr = end; > + spinlock_t *ptl; > + int ret = 0; > + pte_t *pte; > + > +#ifdef CONFIG_TRANSPARENT_HUGEPAGE > + ptl = pmd_trans_huge_lock(pmd, vma); > + if (ptl) { [...] > + return ret; > + } > +process_smaller_pages: > + if (pmd_trans_unstable(pmd)) > + return 0; Why pmd_trans_unstable() is needed here and not only after split_huge_pmd()? Best regards Michał Mirosław