[Devel] [PATCH RHEL10 COMMIT] ms/selftests/rseq: Don't run tests with runner scripts outside of the scripts

Konstantin Khorenko khorenko at virtuozzo.com
Mon Aug 24 19:32:23 MSK 2026


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 <broonie at kernel.org>
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 <broonie at kernel.org>
    Signed-off-by: Thomas Gleixner <tglx at kernel.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz at infradead.org>
    Link: https://patch.msgid.link/20260423-selftests-rseq-use-runner-v1-1-e13a133754c1@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 <eva.kurchatova at virtuozzo.com>
    Signed-off-by: Konstantin Khorenko <khorenko at virtuozzo.com>
---
 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
 


More information about the Devel mailing list