• Peter Xu's avatar
    userfaultfd: selftests: add write-protect test · 9b12488a
    Peter Xu authored
    Add uffd tests for write protection.
    
    Instead of introducing new tests for it, let's simply squashing uffd-wp
    tests into existing uffd-missing test cases.  Changes are:
    
    (1) Bouncing tests
    
      We do the write-protection in two ways during the bouncing test:
    
      - By using UFFDIO_COPY_MODE_WP when resolving MISSING pages: then
        we'll make sure for each bounce process every single page will be
        at least fault twice: once for MISSING, once for WP.
    
      - By direct call UFFDIO_WRITEPROTECT on existing faulted memories:
        To further torture the explicit page protection procedures of
        uffd-wp, we split each bounce procedure into two halves (in the
        background thread): the first half will be MISSING+WP for each
        page as explained above.  After the first half, we write protect
        the faulted region in the background thread to make sure at least
        half of the pages will be write protected again which is the first
        half to test the new UFFDIO_WRITEPROTECT call.  Then we continue
        with the 2nd half, which will contain both MISSING and WP faulting
        tests for the 2nd half and WP-only faults from the 1st half.
    
    (2) Event/Signal test
    
      Mostly previous tests but will do MISSING+WP for each page.  For
      sigbus-mode test we'll need to provide standalone path to handle the
      write protection faults.
    
    For all tests, do statistics as well for uffd-wp pages.
    Signed-off-by: default avatarPeter Xu <peterx@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Bobby Powers <bobbypowers@gmail.com>
    Cc: Brian Geffon <bgeffon@google.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Denis Plotnikov <dplotnikov@virtuozzo.com>
    Cc: "Dr . David Alan Gilbert" <dgilbert@redhat.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: "Kirill A . Shutemov" <kirill@shutemov.name>
    Cc: Martin Cracauer <cracauer@cons.org>
    Cc: Marty McFadden <mcfadden8@llnl.gov>
    Cc: Maya Gokhale <gokhale2@llnl.gov>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Mike Rapoport <rppt@linux.vnet.ibm.com>
    Cc: Pavel Emelyanov <xemul@openvz.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Shaohua Li <shli@fb.com>
    Link: http://lkml.kernel.org/r/20200220163112.11409-20-peterx@redhat.comSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    9b12488a
userfaultfd.c 37.8 KB