diff --git a/include/linux/mm.h b/include/linux/mm.h
index bf9811e1321a..c69594c141a9 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1082,6 +1082,8 @@ int zap_vma_ptes(struct vm_area_struct *vma, unsigned long address,
unsigned long size);
void zap_page_range(struct vm_area_struct *vma, unsigned long address,
unsigned long size, struct zap_details *);
+int lazyfree_single_vma(struct vm_area_struct *vma, unsigned long start_addr,
+ unsigned long end_addr);
madvise_free_single_vma?
@@ -251,6 +252,14 @@ static long madvise_willneed(struct vm_area_struct *vma,
return 0;
}
+static long madvise_lazyfree(struct vm_area_struct *vma,
madvise_free?
diff --git a/mm/memory.c b/mm/memory.c
index 037b812a9531..0516c94da1a4 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1284,6 +1284,112 @@ static inline unsigned long zap_pud_range(struct mmu_gather *tlb,
return addr;
}
+static unsigned long lazyfree_pte_range(struct mmu_gather *tlb,
I'd prefer to have all this code directly where it's used, which is in
madvise.c, and also be named accordingly. We can always rename and
move it later on should other code want to reuse it.