On Tue, Jan 03, 2023 at 04:27:32PM -0800, Mike Kravetz wrote: > zap_page_range was originally designed to unmap pages within an address > range that could span multiple vmas. While working on [1], it was > discovered that all callers of zap_page_range pass a range entirely within > a single vma. In addition, the mmu notification call within zap_page > range does not correctly handle ranges that span multiple vmas. When > crossing a vma boundary, a new mmu_notifier_range_init/end call pair > with the new vma should be made. > > Instead of fixing zap_page_range, do the following: > - Create a new routine zap_vma_pages() that will remove all pages within > the passed vma. Most users of zap_page_range pass the entire vma and > can use this new routine. > - For callers of zap_page_range not passing the entire vma, instead call > zap_page_range_single(). > - Remove zap_page_range. > > [1] https://lore.kernel.org/linux-mm/20221114235507.294320-2-mike.kravetz@xxxxxxxxxx/ > Suggested-by: Peter Xu <peterx@xxxxxxxxxx> > Signed-off-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> > --- > RFC->v1 Created zap_vma_pages to zap entire vma (Christoph Hellwig) > Did not add Acked-by's as routine was changed. > > arch/arm64/kernel/vdso.c | 6 ++--- > arch/powerpc/kernel/vdso.c | 4 +--- > arch/powerpc/platforms/book3s/vas-api.c | 2 +- > arch/powerpc/platforms/pseries/vas.c | 3 +-- > arch/riscv/kernel/vdso.c | 6 ++--- > arch/s390/kernel/vdso.c | 4 +--- > arch/s390/mm/gmap.c | 2 +- > arch/x86/entry/vdso/vma.c | 4 +--- > drivers/android/binder_alloc.c | 2 +- > include/linux/mm.h | 7 ++++-- > mm/memory.c | 30 ------------------------- > mm/page-writeback.c | 2 +- > net/ipv4/tcp.c | 7 +++--- > 13 files changed, 21 insertions(+), 58 deletions(-) For s390: Acked-by: Heiko Carstens <hca@xxxxxxxxxxxxx>