• Axel Rasmussen's avatar
    userfaultfd/selftests: fix calculation of expected ioctls · ad0ce23e
    Axel Rasmussen authored
    Today, we assert that the ioctls the kernel reports as supported for a
    registration match a precomputed list.  We decide which ioctls are
    supported by examining the memory type.  Then, in several locations we
    "fix up" this list by adding or removing things this initial decision
    got wrong.
    
    What ioctls the kernel reports is actually a function of several things:
    - The memory type
    - Kernel feature support (e.g., no writeprotect on aarch64)
    - The registration type (e.g., CONTINUE only supported for MINOR mode)
    
    So, we can't fully compute this at the start, in set_test_type.  It
    varies per test, depending on what registration mode(s) those tests use.
    
    Instead, introduce a new function which computes the correct list.  This
    centralizes the add/remove of ioctls depending on these function inputs
    in one place, so we don't have to repeat ourselves in various tests.
    
    Not only is the resulting code a bit shorter, but it fixes a real bug in
    the existing code: previously, we would incorrectly require the
    writeprotect ioctl to be present on aarch64, where it isn't actually
    supported.
    
    Link: https://lkml.kernel.org/r/20210930212309.4001967-4-axelrasmussen@google.comSigned-off-by: default avatarAxel Rasmussen <axelrasmussen@google.com>
    Reviewed-by: default avatarPeter Xu <peterx@redhat.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    ad0ce23e
userfaultfd.c 44.9 KB