lkml.org 
[lkml]   [2017]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v2 0/5] userfaultfd: non-cooperative: better tracking for mapping changes
    Date
    Hi,

    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.

    The patches are agains current -mm tree.

    v2: fix several do_munmap call sites I've missed in v1

    Mike Rapoport (5):
    mm: call vm_munmap in munmap syscall instead of using open coded
    version
    userfaultfd: non-cooperative: add event for memory unmaps
    userfaultfd: non-cooperative: add event for exit() notification
    userfaultfd: mcopy_atomic: return -ENOENT when no compatible VMA found
    userfaultfd_copy: return -ENOSPC in case mm has gone

    arch/mips/kernel/vdso.c | 2 +-
    arch/tile/mm/elf.c | 2 +-
    arch/x86/entry/vdso/vma.c | 2 +-
    arch/x86/mm/mpx.c | 4 +-
    fs/aio.c | 2 +-
    fs/proc/vmcore.c | 4 +-
    fs/userfaultfd.c | 91 ++++++++++++++++++++++++++++++++++++++++
    include/linux/mm.h | 14 ++++---
    include/linux/userfaultfd_k.h | 25 +++++++++++
    include/uapi/linux/userfaultfd.h | 8 +++-
    ipc/shm.c | 6 +--
    kernel/exit.c | 2 +
    mm/mmap.c | 55 ++++++++++++++----------
    mm/mremap.c | 23 ++++++----
    mm/userfaultfd.c | 42 ++++++++++---------
    mm/util.c | 5 ++-
    16 files changed, 217 insertions(+), 70 deletions(-)

    --
    1.9.1

    \
     
     \ /
      Last update: 2017-01-27 21:33    [W:8.768 / U:0.492 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site