summaryrefslogtreecommitdiffstats
path: root/mm/madvise.c
diff options
context:
space:
mode:
authorHugh Dickins <hughd@google.com>2022-02-15 03:21:52 +0100
committerMatthew Wilcox (Oracle) <willy@infradead.org>2022-02-17 17:56:36 +0100
commitb67bf49ce7aae72f63739abee6ac25f64bf20081 (patch)
treee94cfac0f8ad4e293bf4aa3d4370ab7a5cd473e7 /mm/madvise.c
parentmm/munlock: delete page_mlock() and all its works (diff)
downloadlinux-b67bf49ce7aae72f63739abee6ac25f64bf20081.tar.xz
linux-b67bf49ce7aae72f63739abee6ac25f64bf20081.zip
mm/munlock: delete FOLL_MLOCK and FOLL_POPULATE
If counting page mlocks, we must not double-count: follow_page_pte() can tell if a page has already been Mlocked or not, but cannot tell if a pte has already been counted or not: that will have to be done when the pte is mapped in (which lru_cache_add_inactive_or_unevictable() already tracks for new anon pages, but there's no such tracking yet for others). Delete all the FOLL_MLOCK code - faulting in the missing pages will do all that is necessary, without special mlock_vma_page() calls from here. But then FOLL_POPULATE turns out to serve no purpose - it was there so that its absence would tell faultin_page() not to faultin page when setting up VM_LOCKONFAULT areas; but if there's no special work needed here for mlock, then there's no work at all here for VM_LOCKONFAULT. Have I got that right? I've not looked into the history, but see that FOLL_POPULATE goes back before VM_LOCKONFAULT: did it serve a different purpose before? Ah, yes, it was used to skip the old stack guard page. And is it intentional that COW is not broken on existing pages when setting up a VM_LOCKONFAULT area? I can see that being argued either way, and have no reason to disagree with current behaviour. Signed-off-by: Hugh Dickins <hughd@google.com> Acked-by: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Diffstat (limited to 'mm/madvise.c')
0 files changed, 0 insertions, 0 deletions