selftest/lkdtm: Skip stack-entropy test if lkdtm is not available

Exit with return code 4 if lkdtm is not available like other tests
in order to properly skip the test.

Signed-off-by: Misono Tomohiro <misono.tomohiro@jp.fujitsu.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20210805101236.1140381-1-misono.tomohiro@jp.fujitsu.com
This commit is contained in:
Misono Tomohiro 2021-08-05 19:12:36 +09:00 committed by Kees Cook
parent bc93a22a19
commit 90091c367e

View File

@ -4,13 +4,27 @@
# Measure kernel stack entropy by sampling via LKDTM's REPORT_STACK test. # Measure kernel stack entropy by sampling via LKDTM's REPORT_STACK test.
set -e set -e
samples="${1:-1000}" samples="${1:-1000}"
TRIGGER=/sys/kernel/debug/provoke-crash/DIRECT
KSELFTEST_SKIP_TEST=4
# Verify we have LKDTM available in the kernel.
if [ ! -r $TRIGGER ] ; then
/sbin/modprobe -q lkdtm || true
if [ ! -r $TRIGGER ] ; then
echo "Cannot find $TRIGGER (missing CONFIG_LKDTM?)"
else
echo "Cannot write $TRIGGER (need to run as root?)"
fi
# Skip this test
exit $KSELFTEST_SKIP_TEST
fi
# Capture dmesg continuously since it may fill up depending on sample size. # Capture dmesg continuously since it may fill up depending on sample size.
log=$(mktemp -t stack-entropy-XXXXXX) log=$(mktemp -t stack-entropy-XXXXXX)
dmesg --follow >"$log" & pid=$! dmesg --follow >"$log" & pid=$!
report=-1 report=-1
for i in $(seq 1 $samples); do for i in $(seq 1 $samples); do
echo "REPORT_STACK" >/sys/kernel/debug/provoke-crash/DIRECT echo "REPORT_STACK" > $TRIGGER
if [ -t 1 ]; then if [ -t 1 ]; then
percent=$(( 100 * $i / $samples )) percent=$(( 100 * $i / $samples ))
if [ "$percent" -ne "$report" ]; then if [ "$percent" -ne "$report" ]; then