* [PATCH] kselftest/arm64: Fix size of thread_data values for pthread_join()
@ 2026-09-09 15:57 Thomas Huth
2026-09-11 13:44 ` Will Deacon
0 siblings, 1 reply; 2+ messages in thread
From: Thomas Huth @ 2026-09-09 15:57 UTC (permalink / raw)
To: Catalin Marinas, Will Deacon
Cc: Mark Rutland, Shuah Khan, Vincenzo Frascino, linux-arm-kernel,
linux-kselftest, linux-kernel
pthread_join() stores the thread's return value (a "void *", i.e.
8 bytes on 64 bit computers) into the address that is passed as second
parameter. However, the entries of thread_data are only normal "int"s,
i.e. only 4 bytes. The additional 4 bytes of the return value clobber
whatever is adjacent on the stack, i.e. other members of the thread_data
array (which will be re-written in the next iteration of the for-loop,
so that nobody noticed this problem), or another other local variable
on the stack for the last iteration. Use "intptr_t" to declare the
thread_data array entries with the correct size.
Fixes: 29f080881601c ("kselftest/arm64: check GCR_EL1 after context switch")
Cc: stable@vger.kernel.org
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tools/testing/selftests/arm64/mte/check_gcr_el1_cswitch.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/arm64/mte/check_gcr_el1_cswitch.c b/tools/testing/selftests/arm64/mte/check_gcr_el1_cswitch.c
index d23f154d3288c..5d9dc8bcfbf55 100644
--- a/tools/testing/selftests/arm64/mte/check_gcr_el1_cswitch.c
+++ b/tools/testing/selftests/arm64/mte/check_gcr_el1_cswitch.c
@@ -69,7 +69,7 @@ void *execute_thread(void *x)
int execute_test(pid_t pid)
{
pthread_t thread_id[MAX_THREADS];
- int thread_data[MAX_THREADS];
+ intptr_t thread_data[MAX_THREADS];
for (int i = 0; i < MAX_THREADS; i++)
pthread_create(&thread_id[i], NULL,
--
2.55.0
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] kselftest/arm64: Fix size of thread_data values for pthread_join()
2026-09-09 15:57 [PATCH] kselftest/arm64: Fix size of thread_data values for pthread_join() Thomas Huth
@ 2026-09-11 13:44 ` Will Deacon
0 siblings, 0 replies; 2+ messages in thread
From: Will Deacon @ 2026-09-11 13:44 UTC (permalink / raw)
To: Catalin Marinas, Thomas Huth
Cc: mark.rutland, kernel-team, Will Deacon, Shuah Khan,
Vincenzo Frascino, linux-arm-kernel, linux-kselftest,
linux-kernel
On Wed, 09 Sep 2026 17:57:07 +0200, Thomas Huth wrote:
> pthread_join() stores the thread's return value (a "void *", i.e.
> 8 bytes on 64 bit computers) into the address that is passed as second
> parameter. However, the entries of thread_data are only normal "int"s,
> i.e. only 4 bytes. The additional 4 bytes of the return value clobber
> whatever is adjacent on the stack, i.e. other members of the thread_data
> array (which will be re-written in the next iteration of the for-loop,
> so that nobody noticed this problem), or another other local variable
> on the stack for the last iteration. Use "intptr_t" to declare the
> thread_data array entries with the correct size.
>
> [...]
Applied to arm64 (for-next/fixes), thanks!
[1/1] kselftest/arm64: Fix size of thread_data values for pthread_join()
https://git.kernel.org/arm64/c/3d1ba5cbfb62
Cheers,
--
Will
https://fixes.arm64.dev
https://next.arm64.dev
https://will.arm64.dev
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-11 13:44 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-09 15:57 [PATCH] kselftest/arm64: Fix size of thread_data values for pthread_join() Thomas Huth
2026-09-11 13:44 ` Will Deacon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox