• M
    mm: call vm_munmap in munmap syscall instead of using open coded version · 846b1a0f
    Mike Rapoport 提交于
    Patch series "userfaultfd: non-cooperative: better tracking for mapping
    changes", v2.
    
    These patches try to address issues I've encountered during integration
    of userfaultfd with CRIU.
    
    Previously added userfaultfd events for fork(), madvise() and mremap()
    unfortunately do not cover all possible changes to a process virtual
    memory layout required for uffd monitor.
    
    When one or more VMAs is removed from the process mm, the external uffd
    monitor has no way to detect those changes and will attempt to fill the
    removed regions with userfaultfd_copy.
    
    Another problematic event is the exit() of the process.  Here again, the
    external uffd monitor will try to use userfaultfd_copy, although mm
    owning the memory has already gone.
    
    The first patch in the series is a minor cleanup and it's not strictly
    related to the rest of the series.
    
    The patches 2 and 3 below add UFFD_EVENT_UNMAP and UFFD_EVENT_EXIT to
    allow the uffd monitor track changes in the memory layout of a process.
    
    The patches 4 and 5 amend error codes returned by userfaultfd_copy to
    make the uffd monitor able to cope with races that might occur between
    delivery of unmap and exit events and outstanding userfaultfd_copy's.
    
    This patch (of 5):
    
    Commit dc0ef0df ("mm: make mmap_sem for write waits killable for mm
    syscalls") replaced call to vm_munmap in munmap syscall with open coded
    version to allow different waits on mmap_sem in munmap syscall and
    vm_munmap.
    
    Now both functions use down_write_killable, so we can restore the call
    to vm_munmap from the munmap system call.
    
    Link: http://lkml.kernel.org/r/1485542673-24387-2-git-send-email-rppt@linux.vnet.ibm.comSigned-off-by: NMike Rapoport <rppt@linux.vnet.ibm.com>
    Acked-by: NHillf Danton <hillf.zj@alibaba-inc.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Pavel Emelyanov <xemul@virtuozzo.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    846b1a0f
mmap.c 94.9 KB