Add a skip() message function that stops the test, logs an explanation, and sets the "skip" return code (4).
Before loading a livepatch self-test kernel module, first verify that we've built and installed it by running a 'modprobe --dry-run'. This should catch a few environment issues, including !CONFIG_LIVEPATCH and !CONFIG_TEST_LIVEPATCH. In these cases, exit gracefully with the new skip() function.
Reported-by: Jiri Benc jbenc@redhat.com Suggested-by: Shuah Khan shuah@kernel.org Signed-off-by: Joe Lawrence joe.lawrence@redhat.com ---
v2: move assert_mod() call into load_mod() and load_lp_nowait(), before they check whether the module is a livepatch or not (a test-failing assertion).
.../testing/selftests/livepatch/functions.sh | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+)
diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing/selftests/livepatch/functions.sh index 30195449c63c..de5a504ffdbc 100644 --- a/tools/testing/selftests/livepatch/functions.sh +++ b/tools/testing/selftests/livepatch/functions.sh @@ -13,6 +13,14 @@ function log() { echo "$1" > /dev/kmsg }
+# skip(msg) - testing can't proceed +# msg - explanation +function skip() { + log "SKIP: $1" + echo "SKIP: $1" >&2 + exit 4 +} + # die(msg) - game over, man # msg - dying words function die() { @@ -43,6 +51,12 @@ function loop_until() { done }
+function assert_mod() { + local mod="$1" + + modprobe --dry-run "$mod" &>/dev/null +} + function is_livepatch_mod() { local mod="$1"
@@ -75,6 +89,9 @@ function __load_mod() { function load_mod() { local mod="$1"; shift
+ assert_mod "$mod" || + skip "Failed modprobe --dry-run of module: $mod" + is_livepatch_mod "$mod" && die "use load_lp() to load the livepatch module $mod"
@@ -88,6 +105,9 @@ function load_mod() { function load_lp_nowait() { local mod="$1"; shift
+ assert_mod "$mod" || + skip "Failed modprobe --dry-run of module: $mod" + is_livepatch_mod "$mod" || die "module $mod is not a livepatch"