• David Hildenbrand's avatar
    mm/gup: disallow follow_page(FOLL_PIN) · 8909691b
    David Hildenbrand authored
    We want to change the way we handle R/O pins on anonymous pages that might
    be shared: if we detect a possibly shared anonymous page -- mapped R/O and
    not !PageAnonExclusive() -- we want to trigger unsharing via a page fault,
    resulting in an exclusive anonymous page that can be pinned reliably
    without getting replaced via COW on the next write fault.
    
    However, the required page fault will be problematic for follow_page(): in
    contrast to ordinary GUP, follow_page() doesn't trigger faults internally.
    So we would have to end up failing a R/O pin via follow_page(), although
    there is something mapped R/O into the page table, which might be rather
    surprising.
    
    We don't seem to have follow_page(FOLL_PIN) users, and it's a purely
    internal MM function.  Let's just make our life easier and the semantics
    of follow_page() clearer by just disallowing FOLL_PIN for follow_page()
    completely.
    
    Link: https://lkml.kernel.org/r/20220428083441.37290-15-david@redhat.comSigned-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Don Dutile <ddutile@redhat.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Jann Horn <jannh@google.com>
    Cc: Jason Gunthorpe <jgg@nvidia.com>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Cc: Khalid Aziz <khalid.aziz@oracle.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Liang Zhang <zhangliang5@huawei.com>
    Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Mike Rapoport <rppt@linux.ibm.com>
    Cc: Nadav Amit <namit@vmware.com>
    Cc: Oded Gabbay <oded.gabbay@gmail.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Pedro Demarchi Gomes <pedrodemargomes@gmail.com>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Roman Gushchin <guro@fb.com>
    Cc: Shakeel Butt <shakeelb@google.com>
    Cc: Yang Shi <shy828301@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    8909691b
hugetlb.c 194 KB