• Hugh Dickins's avatar
    mm/munlock: delete FOLL_MLOCK and FOLL_POPULATE · b67bf49c
    Hugh Dickins authored
    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: default avatarHugh Dickins <hughd@google.com>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
    b67bf49c
gup.c 89.3 KB