tools/testing/selftests/sysctl/sysctl.sh: add proc_do_large_bitmap() test case

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.

[[email protected]: move proc_do_large_bitmap() export to EOF]
[[email protected]: use new target description for backward compatibility]
[[email protected]: augment test number to 50, ran into issues with bash string comparisons when testing up to 50 cases.]
[[email protected]: introduce and use verify_diff_proc_file() to use diff]
[[email protected]: use mktemp for tmp file]
[[email protected]: merge shell test and C code]
[[email protected]: commit log love]
[[email protected]: export proc_do_large_bitmap() to allow for the test
[[email protected]: check for the return value when writing to the proc file]
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Eric Sandeen <[email protected]>
Signed-off-by: Luis Chamberlain <[email protected]>
Acked-by: Kees Cook <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
2 files changed