• Mike Kravetz's avatar
    hugetlb: clean up code checking for fault/truncation races · fa27759a
    Mike Kravetz authored
    With the new hugetlb vma lock in place, it can also be used to handle page
    fault races with file truncation.  The lock is taken at the beginning of
    the code fault path in read mode.  During truncation, it is taken in write
    mode for each vma which has the file mapped.  The file's size (i_size) is
    modified before taking the vma lock to unmap.
    
    How are races handled?
    
    The page fault code checks i_size early in processing after taking the vma
    lock.  If the fault is beyond i_size, the fault is aborted.  If the fault
    is not beyond i_size the fault will continue and a new page will be added
    to the file.  It could be that truncation code modifies i_size after the
    check in fault code.  That is OK, as truncation code will soon remove the
    page.  The truncation code will wait until the fault is finished, as it
    must obtain the vma lock in write mode.
    
    This patch cleans up/removes late checks in the fault paths that try to
    back out pages racing with truncation.  As noted above, we just let the
    truncation code remove the pages.
    
    [mike.kravetz@oracle.com: fix reserve_alloc set but not used compiler warning]
      Link: https://lkml.kernel.org/r/Yyj7HsJWfHDoU24U@monkey
    Link: https://lkml.kernel.org/r/20220914221810.95771-10-mike.kravetz@oracle.comSigned-off-by: default avatarMike Kravetz <mike.kravetz@oracle.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
    Cc: Axel Rasmussen <axelrasmussen@google.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: James Houghton <jthoughton@google.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Miaohe Lin <linmiaohe@huawei.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Mina Almasry <almasrymina@google.com>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Naoya Horiguchi <naoya.horiguchi@linux.dev>
    Cc: Pasha Tatashin <pasha.tatashin@soleen.com>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Prakash Sangappa <prakash.sangappa@oracle.com>
    Cc: Sven Schnelle <svens@linux.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    fa27759a
hugetlb.c 205 KB