On Wed, Aug 28, 2019 at 04:19:54PM +0200, Christoph Hellwig wrote: > @@ -2546,7 +2542,7 @@ int s390_enable_sie(void) > mm->context.has_pgste = 1; > /* split thp mappings and disable thp for future mappings */ > thp_split_mm(mm); > - zap_zero_pages(mm); > + walk_page_range(mm, 0, TASK_SIZE, &zap_zero_walk_ops, NULL); > up_write(&mm->mmap_sem); > return 0; > } [..] > @@ -1217,7 +1222,8 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf, > 0, NULL, mm, 0, -1UL); > mmu_notifier_invalidate_range_start(&range); > } > - walk_page_range(0, mm->highest_vm_end, &clear_refs_walk); > + walk_page_range(mm, 0, mm->highest_vm_end, &clear_refs_walk_ops, > + &cp); Is the difference between TASK_SIZE and 'highest_vm_end' deliberate, or should we add a 'walk_all_pages'() mini helper for this? I see most of the users are using one or the other variant. Otherwise the mechanical transformation looked OK to me Reviewed-by: Jason Gunthorpe <jgg@xxxxxxxxxxxx> Jason