Skip to content

Commit

Permalink
selftests/lkdtm: Add way to repeat a test
Browse files Browse the repository at this point in the history
Some LKDTM tests need to be run more than once (usually to setup and
then later trigger). Until now, the only case was the SOFT_LOCKUP test,
which wasn't useful to run in the bulk selftests. The coming stack canary
checking needs to run twice, so support this with a new test output prefix
"repeat".

Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20211022223826.330653-2-keescook@chromium.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Kees Cook authored and Greg Kroah-Hartman committed Oct 25, 2021
1 parent 0e53a9e commit 149538c
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion tools/testing/selftests/lkdtm/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,14 @@ if echo "$test" | grep -q '^#' ; then
fi

# If no expected output given, assume an Oops with back trace is success.
repeat=1
if [ -z "$expect" ]; then
expect="call trace:"
else
if echo "$expect" | grep -q '^repeat:' ; then
repeat=$(echo "$expect" | cut -d' ' -f1 | cut -d: -f2)
expect=$(echo "$expect" | cut -d' ' -f2-)
fi
fi

# Prepare log for report checking
Expand All @@ -83,7 +89,9 @@ dmesg > "$DMESG"
# the signal that killed the subprocess, we must ignore the failure and
# continue. However we don't silence stderr since there might be other
# useful details reported there in the case of other unexpected conditions.
echo "$test" | cat >"$TRIGGER" || true
for i in $(seq 1 $repeat); do
echo "$test" | cat >"$TRIGGER" || true
done

# Record and dump the results
dmesg | comm --nocheck-order -13 "$DMESG" - > "$LOG" || true
Expand Down

0 comments on commit 149538c

Please sign in to comment.