summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorThomas Huth <thuth@redhat.com>2026-09-09 17:57:07 +0200
committerWill Deacon <will@kernel.org>2026-09-11 12:48:02 +0000
commit3d1ba5cbfb622025690c218d8f20da92a9ecb383 (patch)
tree331362f544c0a41a17de391715a04add1d1fd854 /tools
parent8cf2093f5372952a9ebc805c418d45df7112cd14 (diff)
kselftest/arm64: Fix size of thread_data values for pthread_join()
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> Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/testing/selftests/arm64/mte/check_gcr_el1_cswitch.c2
1 files changed, 1 insertions, 1 deletions
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 d23f154d3288..5d9dc8bcfbf5 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 @@ fail:
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,