From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konstantin Khorenko Date: Mon, 24 Aug 2026 18:32:23 +0200 Subject: [Devel] [PATCH RHEL10 COMMIT] ms/selftests/rseq: Don't run tests with runner scripts outside of the scripts In-Reply-To: <20260824163202.461955-1-khorenko@virtuozzo.com> Message-ID: <202608241632.67OGWNc1461989@hci8VM.finist.virtuozzo.com> List-Id: The commit is pushed to "branch-rh10-6.12.0-211.39.1.16.x.vz10-ovz" and will appear at git at bitbucket.org:openvz/vzkernel.git after rh10-6.12.0-211.39.1.16.8.vz10 ------> commit b8ab001a0083d19b0fa5f9a7a0ea508fe19e51f4 Author: Mark Brown Date: Thu Apr 23 20:17:45 2026 +0100 ms/selftests/rseq: Don't run tests with runner scripts outside of the scripts The rseq selftests include two runner scripts run_param_test.sh and run_syscall_errors_test.sh which set up the environment for test binaries and run them with various parameters. Currently we list these test binaries in TEST_GEN_PROGS but this results in the kselftest framework running them directly as well as via the runners, resulting in duplication and spurious failures when the environment is not correctly set up (eg, if glibc tries to use rseq). Move the binaries the runners invoke to TEST_GEN_PROGS_EXTENDED, binaries listed there are built but not run by the framework. The param_test benchmarks are not moved since they are not run by run_param_test.sh. Fixes: 830969e7821a ("selftests/rseq: Implement time slice extension test") Signed-off-by: Mark Brown Signed-off-by: Thomas Gleixner Signed-off-by: Peter Zijlstra (Intel) Link: https://patch.msgid.link/20260423-selftests-rseq-use-runner-v1-1-e13a133754c1 at kernel.org Cc: stable at vger.kernel.org (cherry picked from commit cb48828f06afa232cc330f0f4d6be101067810b3) Conflict: slice_test does not exist in this tree, so it stays out of TEST_GEN_PROGS. Everything else matches the upstream commit. Why the standalone binary was failing here. The wrapper which sets the environment up is already in the tree: GLIBC_TUNABLES="${GLIBC_TUNABLES:-}:glibc.pthread.rseq=0" ./syscall_errors_test glibc.pthread.rseq=0 tells glibc not to register rseq, so the thread really is unregistered and every expectation of the test holds. No skip inside the test is needed, it does its job for real. What broke is that the binary was listed twice in effect: directly in TEST_GEN_PROGS, and through the wrapper in TEST_PROGS. emit_tests in lib.mk writes out both, and the shipped rpm showed exactly that: rseq:param_test rseq:param_test_compare_twice rseq:param_test_mm_cid rseq:param_test_mm_cid_compare_twice rseq:syscall_errors_test <- run directly, no tunable, fails rseq:run_param_test.sh rseq:run_syscall_errors_test.sh <- run through the wrapper, passes Our test runner walks that list entry by entry, so it invoked the bare binary as well, and that one failed. With this commit the duplicate entries are gone and only the wrappers remain. https://virtuozzo.atlassian.net/browse/VSTOR-139675 Feature: fix selftests Reported-by: Eva Kurchatova Signed-off-by: Konstantin Khorenko --- tools/testing/selftests/rseq/Makefile | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/rseq/Makefile b/tools/testing/selftests/rseq/Makefile index 0d0a5fae5954..2cc472bac14e 100644 --- a/tools/testing/selftests/rseq/Makefile +++ b/tools/testing/selftests/rseq/Makefile @@ -14,12 +14,15 @@ LDLIBS += -lpthread -ldl # still track changes to header files and depend on shared object. OVERRIDE_TARGETS = 1 -TEST_GEN_PROGS = basic_test basic_percpu_ops_test basic_percpu_ops_mm_cid_test param_test \ - param_test_benchmark param_test_compare_twice param_test_mm_cid \ - param_test_mm_cid_benchmark param_test_mm_cid_compare_twice \ - syscall_errors_test - -TEST_GEN_PROGS_EXTENDED = librseq.so +TEST_GEN_PROGS = basic_test basic_percpu_ops_test basic_percpu_ops_mm_cid_test \ + param_test_benchmark param_test_mm_cid_benchmark + +TEST_GEN_PROGS_EXTENDED = librseq.so \ + param_test \ + param_test_compare_twice \ + param_test_mm_cid \ + param_test_mm_cid_compare_twice \ + syscall_errors_test TEST_PROGS = run_param_test.sh run_syscall_errors_test.sh