when CONFIG_TEST_SYSCTL=y, there is no "/sys/module/test_sysctl/" when CONFIG_TEST_SYSCTL=m, checking /sys/module/test_sysctl/ is before kernel module loading
you'll get below error message root@intel-x86-64:/tmp/sysctl# ./sysctl.sh Checking production write strict setting ... ok ./sysctl.sh: /sys/module/test_sysctl/ not present You must have the following enabled in your kernel:
This patch will fix this issue. when CONFIG_TEST_SYSCTL=y, it has no chance to check "/sys/module/test_sysctl/" when CONFIG_TEST_SYSCTL=m, it will load kernel module first before checking sys interface.
Signed-off-by: Lei Yang Lei.Yang@windriver.com --- tools/testing/selftests/sysctl/sysctl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/sysctl/sysctl.sh b/tools/testing/selftests/sysctl/sysctl.sh index 584eb8e..08dc995 100755 --- a/tools/testing/selftests/sysctl/sysctl.sh +++ b/tools/testing/selftests/sysctl/sysctl.sh @@ -120,6 +120,7 @@ test_reqs()
function load_req_mod() { + trap "test_modprobe" EXIT if [ ! -d $DIR ]; then if ! modprobe -q -n $TEST_DRIVER; then echo "$0: module $TEST_DRIVER not found [SKIP]" @@ -770,7 +771,6 @@ function parse_args() test_reqs allow_user_defaults check_production_sysctl_writes_strict -test_modprobe load_req_mod
trap "test_finish" EXIT
On Thu, 6 Sep 2018 at 12:20, Lei Yang Lei.Yang@windriver.com wrote:
when CONFIG_TEST_SYSCTL=y, there is no "/sys/module/test_sysctl/" when CONFIG_TEST_SYSCTL=m, checking /sys/module/test_sysctl/ is before kernel module loading
you'll get below error message root@intel-x86-64:/tmp/sysctl# ./sysctl.sh Checking production write strict setting ... ok ./sysctl.sh: /sys/module/test_sysctl/ not present You must have the following enabled in your kernel:
This patch will fix this issue. when CONFIG_TEST_SYSCTL=y, it has no chance to check "/sys/module/test_sysctl/" when CONFIG_TEST_SYSCTL=m, it will load kernel module first before checking sys interface.
Signed-off-by: Lei Yang Lei.Yang@windriver.com
tools/testing/selftests/sysctl/sysctl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/sysctl/sysctl.sh b/tools/testing/selftests/sysctl/sysctl.sh index 584eb8e..08dc995 100755 --- a/tools/testing/selftests/sysctl/sysctl.sh +++ b/tools/testing/selftests/sysctl/sysctl.sh @@ -120,6 +120,7 @@ test_reqs()
function load_req_mod() {
trap "test_modprobe" EXIT if [ ! -d $DIR ]; then if ! modprobe -q -n $TEST_DRIVER; then echo "$0: module $TEST_DRIVER not found [SKIP]"
@@ -770,7 +771,6 @@ function parse_args() test_reqs allow_user_defaults check_production_sysctl_writes_strict -test_modprobe load_req_mod
trap "test_finish" EXIT
1.9.1
do we really nead the test_modprobe function? I think we can just remove that completely. Also remove a lot in load_req_mod and only do: modprobe $TEST_DRIVER if it fails its a non fatal error and we can go on and have a new function in all the tests sysctl_test_000(1|2|3|4|5) that checks for the files. Maybe do something like this:
diff --git a/tools/testing/selftests/sysctl/sysctl.sh b/tools/testing/selftests/sysctl/sysctl.sh index 584eb8ea780a..a925d040dfe0 100755 --- a/tools/testing/selftests/sysctl/sysctl.sh +++ b/tools/testing/selftests/sysctl/sysctl.sh @@ -19,7 +19,6 @@ ksft_skip=4
TEST_NAME="sysctl" TEST_DRIVER="test_${TEST_NAME}" -TEST_DIR=$(dirname $0) TEST_FILE=$(mktemp)
# This represents @@ -38,21 +37,8 @@ ALL_TESTS="$ALL_TESTS 0003:1:1" ALL_TESTS="$ALL_TESTS 0004:1:1" ALL_TESTS="$ALL_TESTS 0005:3:1"
-test_modprobe() -{ - if [ ! -d $DIR ]; then - echo "$0: $DIR not present" >&2 - echo "You must have the following enabled in your kernel:" >&2 - cat $TEST_DIR/config >&2 - exit $ksft_skip - fi -} - function allow_user_defaults() { - if [ -z $DIR ]; then - DIR="/sys/module/test_sysctl/" - fi if [ -z $DEFAULT_NUM_TESTS ]; then DEFAULT_NUM_TESTS=50 fi @@ -120,16 +106,7 @@ test_reqs()
function load_req_mod() { - if [ ! -d $DIR ]; then - if ! modprobe -q -n $TEST_DRIVER; then - echo "$0: module $TEST_DRIVER not found [SKIP]" - exit $ksft_skip - fi - modprobe $TEST_DRIVER - if [ $? -ne 0 ]; then - exit - fi - fi + modprobe $TEST_DRIVER }
reset_vals() @@ -548,9 +525,18 @@ run_stringtests() test_rc }
+check_sysctl_file() +{ + if [ ! -f ${1} ]; then + echo "$0: ${1} not present" >&2 + exit $ksft_skip + fi +} + sysctl_test_0001() { TARGET="${SYSCTL}/int_0001" + check_sysctl_file ${TARGET} reset_vals ORIG=$(cat "${TARGET}") TEST_STR=$(( $ORIG + 1 )) @@ -562,6 +548,7 @@ sysctl_test_0001() sysctl_test_0002() { TARGET="${SYSCTL}/string_0001" + check_sysctl_file ${TARGET} reset_vals ORIG=$(cat "${TARGET}") TEST_STR="Testing sysctl" @@ -575,6 +562,7 @@ sysctl_test_0002() sysctl_test_0003() { TARGET="${SYSCTL}/int_0002" + check_sysctl_file ${TARGET} reset_vals ORIG=$(cat "${TARGET}") TEST_STR=$(( $ORIG + 1 )) @@ -587,6 +575,7 @@ sysctl_test_0003() sysctl_test_0004() { TARGET="${SYSCTL}/uint_0001" + check_sysctl_file ${TARGET} reset_vals ORIG=$(cat "${TARGET}") TEST_STR=$(( $ORIG + 1 )) @@ -599,6 +588,7 @@ sysctl_test_0004() sysctl_test_0005() { TARGET="${SYSCTL}/int_0003" + check_sysctl_file ${TARGET} reset_vals ORIG=$(cat "${TARGET}")
@@ -620,8 +610,6 @@ list_tests() echo "0005 x $(get_test_count 0005) - tests proc_douintvec() array" }
-test_reqs - usage() { NUM_TESTS=$(grep -o ' ' <<<"$ALL_TESTS" | grep -c .) @@ -770,7 +758,6 @@ function parse_args() test_reqs allow_user_defaults check_production_sysctl_writes_strict -test_modprobe load_req_mod
trap "test_finish" EXIT
Cheers, Anders
On Thu, Sep 06, 2018 at 06:22:54PM +0800, Lei Yang wrote:
when CONFIG_TEST_SYSCTL=y, there is no "/sys/module/test_sysctl/" when CONFIG_TEST_SYSCTL=m, checking /sys/module/test_sysctl/ is before kernel module loading
you'll get below error message root@intel-x86-64:/tmp/sysctl# ./sysctl.sh Checking production write strict setting ... ok ./sysctl.sh: /sys/module/test_sysctl/ not present You must have the following enabled in your kernel:
This patch will fix this issue. when CONFIG_TEST_SYSCTL=y, it has no chance to check "/sys/module/test_sysctl/" when CONFIG_TEST_SYSCTL=m, it will load kernel module first before checking sys interface.
Signed-off-by: Lei Yang Lei.Yang@windriver.com
tools/testing/selftests/sysctl/sysctl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/sysctl/sysctl.sh b/tools/testing/selftests/sysctl/sysctl.sh index 584eb8e..08dc995 100755 --- a/tools/testing/selftests/sysctl/sysctl.sh +++ b/tools/testing/selftests/sysctl/sysctl.sh @@ -120,6 +120,7 @@ test_reqs() function load_req_mod() {
if [ ! -d $DIR ]; then if ! modprobe -q -n $TEST_DRIVER; then echo "$0: module $TEST_DRIVER not found [SKIP]"trap "test_modprobe" EXIT
@@ -770,7 +771,6 @@ function parse_args() test_reqs allow_user_defaults check_production_sysctl_writes_strict -test_modprobe
Better yet, we can just depend on /proc/config stuff for test modules, refer to check_mods() on tools/testing/selftests/firmware/fw_lib.sh. Feel free to make helpers if you can come up with a generic directory, otherwise just duplicate the effort for now.
Luis
linux-kselftest-mirror@lists.linaro.org