mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 08:15:07 -04:00
selftests/arm64: Print missing MTE TAP headers
Most MTE tests set a TAP plan and emit results without first printing
the TAP version header. Direct execution therefore starts with a plan
such as "1..20" instead of "TAP version 13".
The problem is particularly visible in the GCR_EL1 context-switch test.
It prints its plan before forking 1,024 child processes. When stdout is
fully buffered, the plan remains in the stdio buffer. Each child inherits
the pending "1..1" line and flushes its copy from exit(), producing
repeated plan lines.
ksft_print_header() prints the TAP header and enables line buffering.
Call it in every MTE test that is missing it. In the GCR_EL1 test, call
it before the plan so the plan is flushed before the children are
forked. In the remaining tests, call it before setup and prerequisite
checks so early failures and whole-test skips also retain the header.
Fixes: 29f0808816 ("kselftest/arm64: check GCR_EL1 after context switch")
Signed-off-by: Muhammad Usama Anjum <usama.anjum@arm.com>
Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Reviewed-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
committed by
Will Deacon
parent
f5b8b9037d
commit
8d2237e9d6
@@ -406,6 +406,8 @@ int main(int argc, char *argv[])
|
||||
size_t page_size = getpagesize();
|
||||
int item = ARRAY_SIZE(sizes);
|
||||
|
||||
ksft_print_header();
|
||||
|
||||
sizes[item - 3] = page_size - 1;
|
||||
sizes[item - 2] = page_size;
|
||||
sizes[item - 1] = page_size + 1;
|
||||
|
||||
@@ -146,6 +146,8 @@ int main(int argc, char *argv[])
|
||||
int err;
|
||||
int item = ARRAY_SIZE(sizes);
|
||||
|
||||
ksft_print_header();
|
||||
|
||||
page_size = getpagesize();
|
||||
if (!page_size) {
|
||||
ksft_print_msg("ERR: Unable to get page size\n");
|
||||
|
||||
@@ -131,6 +131,7 @@ int main(int argc, char *argv[])
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
ksft_print_header();
|
||||
ksft_set_plan(1);
|
||||
|
||||
evaluate_test(mte_gcr_fork_test(),
|
||||
|
||||
@@ -230,6 +230,8 @@ int main(int argc, char *argv[])
|
||||
void *map_ptr;
|
||||
unsigned long map_size;
|
||||
|
||||
ksft_print_header();
|
||||
|
||||
err = mte_default_setup();
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@@ -132,6 +132,8 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
int err;
|
||||
|
||||
ksft_print_header();
|
||||
|
||||
err = mte_default_setup();
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@@ -945,6 +945,8 @@ int main(int argc, char *argv[])
|
||||
},
|
||||
};
|
||||
|
||||
ksft_print_header();
|
||||
|
||||
err = mte_default_setup();
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@@ -175,6 +175,8 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
int err;
|
||||
|
||||
ksft_print_header();
|
||||
|
||||
err = mte_default_setup();
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@@ -201,6 +201,8 @@ int main(int argc, char *argv[])
|
||||
int tag_offsets[] = {page_sz, MT_GRANULE_SIZE};
|
||||
char test_name[TEST_NAME_MAX];
|
||||
|
||||
ksft_print_header();
|
||||
|
||||
page_sz = getpagesize();
|
||||
if (!page_sz) {
|
||||
ksft_print_msg("ERR: Unable to get page size\n");
|
||||
|
||||
Reference in New Issue
Block a user