* [PATCH 0/2] selftests/membarrier: Skip an unregistered memory barrier test on Musl
@ 2026-08-03 12:48 Chris Gellermann
2026-08-03 12:48 ` [PATCH 1/2] selftests/membarrier: Introduce helper to get membarrier command registrations Chris Gellermann
2026-08-03 12:49 ` [PATCH 2/2] selftests/membarrier: Skip unpermitted membarrier command test if preregistered by libc Chris Gellermann
0 siblings, 2 replies; 4+ messages in thread
From: Chris Gellermann @ 2026-08-03 12:48 UTC (permalink / raw)
To: shuah, linux-kselftest
Cc: richard.weiyang, akpm, reddybalavignesh9979, linux-kernel,
Chris Gellermann
The membarrier test "membarrier MEMBARRIER_CMD_PRIVATE_EXPEDITED not
registered failure" fails in the multithreaded test scenario when using
Musl libc as the command gets preregistered implicitly during thread
creation. Skip the test if command registration is detected.
Chris Gellermann (2):
selftests/membarrier: Introduce helper to get membarrier command
registrations
selftests/membarrier: Skip unpermitted membarrier command test if
preregistered by libc
.../selftests/membarrier/membarrier_test_impl.h | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
--
2.47.3
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH 1/2] selftests/membarrier: Introduce helper to get membarrier command registrations 2026-08-03 12:48 [PATCH 0/2] selftests/membarrier: Skip an unregistered memory barrier test on Musl Chris Gellermann @ 2026-08-03 12:48 ` Chris Gellermann 2026-08-03 12:49 ` [PATCH 2/2] selftests/membarrier: Skip unpermitted membarrier command test if preregistered by libc Chris Gellermann 1 sibling, 0 replies; 4+ messages in thread From: Chris Gellermann @ 2026-08-03 12:48 UTC (permalink / raw) To: shuah, linux-kselftest Cc: richard.weiyang, akpm, reddybalavignesh9979, linux-kernel, Chris Gellermann This allows reusage. Signed-off-by: Chris Gellermann <christian.gellermann@codasip.com> --- tools/testing/selftests/membarrier/membarrier_test_impl.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/membarrier/membarrier_test_impl.h b/tools/testing/selftests/membarrier/membarrier_test_impl.h index f6d7c44b2288..29aac3bc4988 100644 --- a/tools/testing/selftests/membarrier/membarrier_test_impl.h +++ b/tools/testing/selftests/membarrier/membarrier_test_impl.h @@ -16,6 +16,11 @@ static int sys_membarrier(int cmd, int flags) return syscall(__NR_membarrier, cmd, flags); } +static int membarrier_get_registrations(void) +{ + return sys_membarrier(MEMBARRIER_CMD_GET_REGISTRATIONS, 0); +} + static int test_membarrier_get_registrations(int cmd) { int ret, flags = 0; @@ -24,7 +29,7 @@ static int test_membarrier_get_registrations(int cmd) registrations |= cmd; - ret = sys_membarrier(MEMBARRIER_CMD_GET_REGISTRATIONS, 0); + ret = membarrier_get_registrations(); if (ret < 0) { ksft_exit_fail_msg( "%s test: flags = %d, errno = %d\n", -- 2.47.3 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] selftests/membarrier: Skip unpermitted membarrier command test if preregistered by libc 2026-08-03 12:48 [PATCH 0/2] selftests/membarrier: Skip an unregistered memory barrier test on Musl Chris Gellermann 2026-08-03 12:48 ` [PATCH 1/2] selftests/membarrier: Introduce helper to get membarrier command registrations Chris Gellermann @ 2026-08-03 12:49 ` Chris Gellermann 2026-08-03 20:37 ` Andrew Morton 1 sibling, 1 reply; 4+ messages in thread From: Chris Gellermann @ 2026-08-03 12:49 UTC (permalink / raw) To: shuah, linux-kselftest Cc: richard.weiyang, akpm, reddybalavignesh9979, linux-kernel, Chris Gellermann On thread creation, Musl registers the private expedited memory barrier, see pthread_create [1]. Thus, invoking the barrier command will no longer be rejected by the kernel with EPERM. The test checking this will fail. Check if the memory barrier command has been registered and skip the test in this case. Link: https://git.musl-libc.org/cgit/musl/tree/src/thread/pthread_create.c#n260 [1] Signed-off-by: Chris Gellermann <christian.gellermann@codasip.com> --- .../selftests/membarrier/membarrier_test_impl.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/testing/selftests/membarrier/membarrier_test_impl.h b/tools/testing/selftests/membarrier/membarrier_test_impl.h index 29aac3bc4988..b4dcbb32538d 100644 --- a/tools/testing/selftests/membarrier/membarrier_test_impl.h +++ b/tools/testing/selftests/membarrier/membarrier_test_impl.h @@ -113,6 +113,16 @@ static int test_membarrier_private_expedited_fail(void) int cmd = MEMBARRIER_CMD_PRIVATE_EXPEDITED, flags = 0; const char *test_name = "sys membarrier MEMBARRIER_CMD_PRIVATE_EXPEDITED not registered failure"; + /* + * Some C libraries, like Musl, register the private expedited barrier + * command when creating a thread. Expecting an EPERM on an unregistered + * command will therefore no longer work. Skip the test in this case. + */ + if (MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED & membarrier_get_registrations()) { + ksft_test_result_skip("%s test: Command already registered\n", test_name); + return 0; + } + if (sys_membarrier(cmd, flags) != -1) { ksft_exit_fail_msg( "%s test: flags = %d. Should fail, but passed\n", -- 2.47.3 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] selftests/membarrier: Skip unpermitted membarrier command test if preregistered by libc 2026-08-03 12:49 ` [PATCH 2/2] selftests/membarrier: Skip unpermitted membarrier command test if preregistered by libc Chris Gellermann @ 2026-08-03 20:37 ` Andrew Morton 0 siblings, 0 replies; 4+ messages in thread From: Andrew Morton @ 2026-08-03 20:37 UTC (permalink / raw) To: Chris Gellermann Cc: shuah, linux-kselftest, richard.weiyang, reddybalavignesh9979, linux-kernel, Mathieu Desnoyers, Paul E. McKenney, Ingo Molnar, Peter Zijlstra, Juri Lelli, Vincent Guittot, Dietmar Eggemann, Steven Rostedt, Ben Segall, Mel Gorman, Valentin Schneider, K Prateek Nayak On Mon, 3 Aug 2026 14:49:00 +0200 Chris Gellermann <christian.gellermann@codasip.com> wrote: > On thread creation, Musl registers the private expedited memory barrier, > see pthread_create [1]. Thus, invoking the barrier command will no > longer be rejected by the kernel with EPERM. The test checking this will > fail. Check if the memory barrier command has been registered and skip > the test in this case. > Who the heck maintains sched/membarrier? Short answer: everybody I've ever met. All are cheerfully cc'ed. Perhaps finer-tuned answer: Peter. > --- a/tools/testing/selftests/membarrier/membarrier_test_impl.h > +++ b/tools/testing/selftests/membarrier/membarrier_test_impl.h > @@ -113,6 +113,16 @@ static int test_membarrier_private_expedited_fail(void) > int cmd = MEMBARRIER_CMD_PRIVATE_EXPEDITED, flags = 0; > const char *test_name = "sys membarrier MEMBARRIER_CMD_PRIVATE_EXPEDITED not registered failure"; > > + /* > + * Some C libraries, like Musl, register the private expedited barrier > + * command when creating a thread. Expecting an EPERM on an unregistered > + * command will therefore no longer work. Skip the test in this case. > + */ > + if (MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED & membarrier_get_registrations()) { > + ksft_test_result_skip("%s test: Command already registered\n", test_name); > + return 0; > + } AI review (https://sashiko.dev/#/patchset/20260803124900.3328789-1-christian.gellermann@codasip.com) thinks that membarrier_get_registrations() can return -1 on old kernels, so we should check for that before testing for MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED. Seems nonsensical to me - membarrier_get_registrations() doesn't do that. And policy (my policy, at least) is that selftests test the kernel they're shipped with and anyone who tries to run them against any older or newer kernel is all out of luck. That being said, and stepping back a bit, is this test testing something which we would test? If pass/fail depends upon deepest details of the chosen libc flavour then perhaps the whole test was ill-conceived. wdyt? ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-08-03 20:37 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-08-03 12:48 [PATCH 0/2] selftests/membarrier: Skip an unregistered memory barrier test on Musl Chris Gellermann 2026-08-03 12:48 ` [PATCH 1/2] selftests/membarrier: Introduce helper to get membarrier command registrations Chris Gellermann 2026-08-03 12:49 ` [PATCH 2/2] selftests/membarrier: Skip unpermitted membarrier command test if preregistered by libc Chris Gellermann 2026-08-03 20:37 ` Andrew Morton
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox