Commit ce247296 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'linux-kselftest-5.7-rc6' of...

Merge tag 'linux-kselftest-5.7-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest

Pull kselftest fixes from Shuah Khan:

 - lkdtm runner fixes to prevent dmesg clearing and shellcheck errors

 - ftrace test handling when test module doesn't exist

 - nsfs test fix to replace zero-length array with flexible-array

 - dmabuf-heaps test fix to return clear error value

* tag 'linux-kselftest-5.7-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
  selftests/lkdtm: Use grep -E instead of egrep
  selftests/lkdtm: Don't clear dmesg when running tests
  selftests/ftrace: mark irqsoff_tracer.tc test as unresolved if the test module does not exist
  tools/testing: Replace zero-length array with flexible-array
  kselftests: dmabuf-heaps: Fix confused return value on expected error testing
parents 67e45621 851c4df5
...@@ -351,6 +351,7 @@ static int test_alloc_errors(char *heap_name) ...@@ -351,6 +351,7 @@ static int test_alloc_errors(char *heap_name)
} }
printf("Expected error checking passed\n"); printf("Expected error checking passed\n");
ret = 0;
out: out:
if (dmabuf_fd >= 0) if (dmabuf_fd >= 0)
close(dmabuf_fd); close(dmabuf_fd);
......
...@@ -17,7 +17,14 @@ unsup() { #msg ...@@ -17,7 +17,14 @@ unsup() { #msg
exit_unsupported exit_unsupported
} }
modprobe $MOD || unsup "$MOD module not available" unres() { #msg
reset_tracer
rmmod $MOD || true
echo $1
exit_unresolved
}
modprobe $MOD || unres "$MOD module not available"
rmmod $MOD rmmod $MOD
grep -q "preemptoff" available_tracers || unsup "preemptoff tracer not enabled" grep -q "preemptoff" available_tracers || unsup "preemptoff tracer not enabled"
......
...@@ -25,13 +25,13 @@ fi ...@@ -25,13 +25,13 @@ fi
# Figure out which test to run from our script name. # Figure out which test to run from our script name.
test=$(basename $0 .sh) test=$(basename $0 .sh)
# Look up details about the test from master list of LKDTM tests. # Look up details about the test from master list of LKDTM tests.
line=$(egrep '^#?'"$test"'\b' tests.txt) line=$(grep -E '^#?'"$test"'\b' tests.txt)
if [ -z "$line" ]; then if [ -z "$line" ]; then
echo "Skipped: missing test '$test' in tests.txt" echo "Skipped: missing test '$test' in tests.txt"
exit $KSELFTEST_SKIP_TEST exit $KSELFTEST_SKIP_TEST
fi fi
# Check that the test is known to LKDTM. # Check that the test is known to LKDTM.
if ! egrep -q '^'"$test"'$' "$TRIGGER" ; then if ! grep -E -q '^'"$test"'$' "$TRIGGER" ; then
echo "Skipped: test '$test' missing in $TRIGGER!" echo "Skipped: test '$test' missing in $TRIGGER!"
exit $KSELFTEST_SKIP_TEST exit $KSELFTEST_SKIP_TEST
fi fi
...@@ -59,30 +59,32 @@ if [ -z "$expect" ]; then ...@@ -59,30 +59,32 @@ if [ -z "$expect" ]; then
expect="call trace:" expect="call trace:"
fi fi
# Clear out dmesg for output reporting
dmesg -c >/dev/null
# Prepare log for report checking # Prepare log for report checking
LOG=$(mktemp --tmpdir -t lkdtm-XXXXXX) LOG=$(mktemp --tmpdir -t lkdtm-log-XXXXXX)
DMESG=$(mktemp --tmpdir -t lkdtm-dmesg-XXXXXX)
cleanup() { cleanup() {
rm -f "$LOG" rm -f "$LOG" "$DMESG"
} }
trap cleanup EXIT trap cleanup EXIT
# Save existing dmesg so we can detect new content below
dmesg > "$DMESG"
# Most shells yell about signals and we're expecting the "cat" process # Most shells yell about signals and we're expecting the "cat" process
# to usually be killed by the kernel. So we have to run it in a sub-shell # to usually be killed by the kernel. So we have to run it in a sub-shell
# and silence errors. # and silence errors.
($SHELL -c 'cat <(echo '"$test"') >'"$TRIGGER" 2>/dev/null) || true ($SHELL -c 'cat <(echo '"$test"') >'"$TRIGGER" 2>/dev/null) || true
# Record and dump the results # Record and dump the results
dmesg -c >"$LOG" dmesg | diff --changed-group-format='%>' --unchanged-group-format='' "$DMESG" - > "$LOG" || true
cat "$LOG" cat "$LOG"
# Check for expected output # Check for expected output
if egrep -qi "$expect" "$LOG" ; then if grep -E -qi "$expect" "$LOG" ; then
echo "$test: saw '$expect': ok" echo "$test: saw '$expect': ok"
exit 0 exit 0
else else
if egrep -qi XFAIL: "$LOG" ; then if grep -E -qi XFAIL: "$LOG" ; then
echo "$test: saw 'XFAIL': [SKIP]" echo "$test: saw 'XFAIL': [SKIP]"
exit $KSELFTEST_SKIP_TEST exit $KSELFTEST_SKIP_TEST
else else
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
#define __stack_aligned__ __attribute__((aligned(16))) #define __stack_aligned__ __attribute__((aligned(16)))
struct cr_clone_arg { struct cr_clone_arg {
char stack[128] __stack_aligned__; char stack[128] __stack_aligned__;
char stack_ptr[0]; char stack_ptr[];
}; };
static int child(void *args) static int child(void *args)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment