On Tue, Jul 11, 2023 at 5:53 AM Muhammad Usama Anjum <usama.anjum@xxxxxxxxxxxxx> wrote: <snip> > +static int pagemap_scan_pte_hole(unsigned long addr, unsigned long end, > + int depth, struct mm_walk *walk) > +{ > + unsigned long n_pages = (end - addr)/PAGE_SIZE; > + struct pagemap_scan_private *p = walk->private; > + struct vm_area_struct *vma = walk->vma; > + int ret = 0; > + > + if (!vma) > + return 0; > + > + if (IS_PM_SCAN_GET(p->flags)) { > + if (n_pages > p->max_pages - p->found_pages) > + n_pages = p->max_pages - p->found_pages; > + > + ret = pagemap_scan_output(PM_SCAN_FLAGS(false, false, false, > + false, false), p, addr, n_pages); Why do we report holes unconditionally? > + } > + > + if (IS_PM_SCAN_WP(p->flags) && > + uffd_wp_range(vma, addr, end - addr, true) < 0) > + ret = -EINVAL; > + > + return ret; > +} Thanks, Andrei