[Devel] [PATCH vz10] selftests/rseq: skip syscall_errors_test when libc owns the registration
Konstantin Khorenko
khorenko at virtuozzo.com
Mon Aug 24 19:22:24 MSK 2026
nack.
After that we just get all tests SKIPPED,
while we should better unregister rseq and execute the test.
Mainstream has also fixed that but in different way - it prevents glibc registering rseq from the very beginning:
cb48828f06af ("selftests/rseq: Don't run tests with runner scripts outside of the scripts")
--
Best regards,
Konstantin Khorenko,
Virtuozzo Linux Kernel Team
On 8/21/26 17:24, Eva Kurchatova wrote:
> The test requires the calling thread to be unregistered and expects
> EFAULT when registering an invalid address. glibc >= 2.35 registers
> rseq for every thread at startup, so the kernel rejects the second
> registration with EINVAL before it ever touches the address.
>
> https://virtuozzo.atlassian.net/browse/VSTOR-139675
> Feature: fix selftests
> Signed-off-by: Eva Kurchatova <eva.kurchatova at virtuozzo.com>
> ---
> tools/testing/selftests/rseq/syscall_errors_test.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/tools/testing/selftests/rseq/syscall_errors_test.c b/tools/testing/selftests/rseq/syscall_errors_test.c
> index a5d9e1f8a2dc..9e6bf6b1df96 100644
> --- a/tools/testing/selftests/rseq/syscall_errors_test.c
> +++ b/tools/testing/selftests/rseq/syscall_errors_test.c
> @@ -34,6 +34,15 @@ int main(void)
> goto error;
> }
>
> + /*
> + * The expectations below only hold for a thread which is not
> + * registered, while glibc >= 2.35 registers every thread at startup.
> + */
> + if (rseq_current_cpu_raw() >= 0) {
> + fprintf(stderr, "rseq is already registered, skipping\n");
> + return 4;
> + }
> +
> /* The current thread is NOT registered. */
>
> /* EINVAL */
More information about the Devel
mailing list