The patch titled Subject: test_sysctl: test against PAGE_SIZE for int has been added to the -mm tree. Its filename is test_sysctl-test-against-page_size-for-int.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/test_sysctl-test-against-page_size-for-int.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/test_sysctl-test-against-page_size-for-int.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: "Luis R. Rodriguez" <mcgrof@xxxxxxxxxx> Subject: test_sysctl: test against PAGE_SIZE for int Add the following tests to ensure we do not regress: o Test using a buffer full of space (PAGE_SIZE-1) followed by a single digit works o Test using a buffer full of spaces (PAGE_SIZE or over) will fail As tests increase instead of unloading the module and reloading it we can just do a shell reset_vals() with a reset to values we know are set at init on the driver. Link: http://lkml.kernel.org/r/20170525233729.18530-4-mcgrof@xxxxxxxxxx Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxxxx> Cc: Kees Cook <keescook@xxxxxxxxxxxx> Cc: "Eric W. Biederman" <ebiederm@xxxxxxxxxxxx> Cc: Shuah Khan <shuah@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- tools/testing/selftests/sysctl/sysctl.sh | 65 +++++++++++++++++++++ 1 file changed, 65 insertions(+) diff -puN tools/testing/selftests/sysctl/sysctl.sh~test_sysctl-test-against-page_size-for-int tools/testing/selftests/sysctl/sysctl.sh --- a/tools/testing/selftests/sysctl/sysctl.sh~test_sysctl-test-against-page_size-for-int +++ a/tools/testing/selftests/sysctl/sysctl.sh @@ -53,6 +53,12 @@ function allow_user_defaults() if [ -z $SYSCTL ]; then SYSCTL="/proc/sys/debug/test_sysctl" fi + if [ -z $PAGE_SIZE ]; then + PAGE_SIZE=$(getconf PAGESIZE) + fi + if [ -z $MAX_DIGITS ]; then + MAX_DIGITS=$(($PAGE_SIZE/8)) + fi } test_reqs() @@ -67,6 +73,10 @@ test_reqs() echo "$0: You need perl installed" exit 1 fi + if ! which getconf 2> /dev/null > /dev/null; then + echo "$0: You need getconf installed" + exit 1 + fi } function load_req_mod() @@ -81,6 +91,23 @@ function load_req_mod() fi } +reset_vals() +{ + VAL="" + TRIGGER=$(basename ${TARGET}) + case "$TRIGGER" in + int_0001) + VAL="60" + ;; + string_0001) + VAL="(none)" + ;; + *) + ;; + esac + echo -n $VAL > $TARGET +} + set_orig() { if [ ! -z $TARGET ]; then @@ -202,7 +229,42 @@ run_numerictests() else echo "ok" fi + test_rc +} + +# Your test must accept digits 3 and 4 to use this +run_limit_digit() +{ + echo -n "Checking ignoring spaces up to PAGE_SIZE works on write ..." + reset_vals + + LIMIT=$((MAX_DIGITS -1)) + TEST_STR="3" + (perl -e 'print " " x '$LIMIT';'; echo "${TEST_STR}") | \ + dd of="${TARGET}" 2>/dev/null + + if ! verify "${TARGET}"; then + echo "FAIL" >&2 + rc=1 + else + echo "ok" + fi + test_rc + + echo -n "Checking passing PAGE_SIZE of spaces fails on write ..." + reset_vals + LIMIT=$((MAX_DIGITS)) + TEST_STR="4" + (perl -e 'print " " x '$LIMIT';'; echo "${TEST_STR}") | \ + dd of="${TARGET}" 2>/dev/null + + if verify "${TARGET}"; then + echo "FAIL" >&2 + rc=1 + else + echo "ok" + fi test_rc } @@ -278,15 +340,18 @@ run_stringtests() sysctl_test_0001() { TARGET="${SYSCTL}/int_0001" + reset_vals ORIG=$(cat "${TARGET}") TEST_STR=$(( $ORIG + 1 )) run_numerictests + run_limit_digit } sysctl_test_0002() { TARGET="${SYSCTL}/string_0001" + reset_vals ORIG=$(cat "${TARGET}") TEST_STR="Testing sysctl" # Only string sysctls support seeking/appending. _ Patches currently in -mm which might be from mcgrof@xxxxxxxxxx are maintainers-give-proc-sysctl-some-maintainer-love.patch sysctl-fix-lax-sysctl_check_table-sanity-check.patch sysctl-kdocify-sysctl_writes_strict.patch sysctl-fold-sysctl_writes_strict-checks-into-helper.patch sysctl-simplify-unsigned-int-support.patch sysctl-add-unsigned-int-range-support.patch test_sysctl-add-dedicated-proc-sysctl-test-driver.patch test_sysctl-add-generic-script-to-expand-on-tests.patch test_sysctl-test-against-page_size-for-int.patch test_sysctl-add-simple-proc_dointvec-case.patch test_sysctl-add-simple-proc_douintvec-case.patch test_sysctl-test-against-int-proc_dointvec-array-support.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html