mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 05:04:02 +02:00
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: 29f0808816 ("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>
This commit is contained in:
parent
8cf2093f53
commit
3d1ba5cbfb
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user