• Eric Sandeen's avatar
    tools/testing/selftests/sysctl/sysctl.sh: add proc_do_large_bitmap() test case · 2ea622b8
    Eric Sandeen authored
    The kernel has only two users of proc_do_large_bitmap(), the kernel CPU
    watchdog, and the ip_local_reserved_ports.  Refer to watchdog_cpumask
    and ip_local_reserved_ports in Documentation for further details on
    these.  When you input a large buffer into these, when it is larger than
    PAGE_SIZE- 1, the input data gets misparsed, and the user get
    incorrectly informed that the desired input value was set.  This commit
    implements a test which mimics and exploits that use case, it uses a
    bitmap size, as in the watchdog case.  The bitmap is used to test the
    bitmap proc handler, proc_do_large_bitmap().
    
    The next commit fixes this issue.
    
    [akpm@linux-foundation.org: move proc_do_large_bitmap() export to EOF]
    [mcgrof@kernel.org: use new target description for backward compatibility]
    [mcgrof@kernel.org: augment test number to 50, ran into issues with bash string comparisons when testing up to 50 cases.]
    [mcgrof@kernel.org: introduce and use verify_diff_proc_file() to use diff]
    [mcgrof@kernel.org: use mktemp for tmp file]
    [mcgrof@kernel.org: merge shell test and C code]
    [mcgrof@kernel.org: commit log love]
    [mcgrof@kernel.org: export proc_do_large_bitmap() to allow for the test
    [mcgrof@kernel.org: check for the return value when writing to the proc file]
    Link: http://lkml.kernel.org/r/20190320222831.8243-6-mcgrof@kernel.orgSigned-off-by: default avatarEric Sandeen <sandeen@redhat.com>
    Signed-off-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
    Acked-by: default avatarKees Cook <keescook@chromium.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    2ea622b8
test_sysctl.c 3.71 KB