diff options
author | Rosen Penev <rosenp@gmail.com> | 2020-03-19 18:31:17 -0700 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2021-09-22 19:04:02 +0200 |
commit | aaec2ad13b18086e2aaf9ca9152827c50e578bc0 (patch) | |
tree | e18a2b2eac49f25fcf7a11298db42eafee0f17d7 /toolchain/musl/patches/500-0001-reorder-thread-list-unlink-in-pthread_exit-after-all.patch | |
parent | da5bb885e17cf77caea70adcf473f1fb95448553 (diff) | |
download | upstream-aaec2ad13b18086e2aaf9ca9152827c50e578bc0.tar.gz upstream-aaec2ad13b18086e2aaf9ca9152827c50e578bc0.tar.bz2 upstream-aaec2ad13b18086e2aaf9ca9152827c50e578bc0.zip |
toolchain/musl: update to 1.2.2
This release introduces 64-bit time_t, which is needed to avoid the
year 2038 problem.
Remove upstream patches. Refreshed others.
Rebased features.h file based on latest musl.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Diffstat (limited to 'toolchain/musl/patches/500-0001-reorder-thread-list-unlink-in-pthread_exit-after-all.patch')
-rw-r--r-- | toolchain/musl/patches/500-0001-reorder-thread-list-unlink-in-pthread_exit-after-all.patch | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/toolchain/musl/patches/500-0001-reorder-thread-list-unlink-in-pthread_exit-after-all.patch b/toolchain/musl/patches/500-0001-reorder-thread-list-unlink-in-pthread_exit-after-all.patch deleted file mode 100644 index d47f2f4108..0000000000 --- a/toolchain/musl/patches/500-0001-reorder-thread-list-unlink-in-pthread_exit-after-all.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 4d5aa20a94a2d3fae3e69289dc23ecafbd0c16c4 Mon Sep 17 00:00:00 2001 -From: Rich Felker <dalias@aerifal.cx> -Date: Fri, 22 May 2020 17:35:14 -0400 -Subject: [PATCH 1/4] reorder thread list unlink in pthread_exit after all - locks - -since the backend for LOCK() skips locking if single-threaded, it's -unsafe to make the process appear single-threaded before the last use -of lock. - -this fixes potential unsynchronized access to a linked list via -__dl_thread_cleanup. ---- - src/thread/pthread_create.c | 19 +++++++++++-------- - 1 file changed, 11 insertions(+), 8 deletions(-) - ---- a/src/thread/pthread_create.c -+++ b/src/thread/pthread_create.c -@@ -90,14 +90,7 @@ _Noreturn void __pthread_exit(void *resu - exit(0); - } - -- /* At this point we are committed to thread termination. Unlink -- * the thread from the list. This change will not be visible -- * until the lock is released, which only happens after SYS_exit -- * has been called, via the exit futex address pointing at the lock. */ -- libc.threads_minus_1--; -- self->next->prev = self->prev; -- self->prev->next = self->next; -- self->prev = self->next = self; -+ /* At this point we are committed to thread termination. */ - - /* Process robust list in userspace to handle non-pshared mutexes - * and the detached thread case where the robust list head will -@@ -121,6 +114,16 @@ _Noreturn void __pthread_exit(void *resu - __do_orphaned_stdio_locks(); - __dl_thread_cleanup(); - -+ /* Last, unlink thread from the list. This change will not be visible -+ * until the lock is released, which only happens after SYS_exit -+ * has been called, via the exit futex address pointing at the lock. -+ * This needs to happen after any possible calls to LOCK() that might -+ * skip locking if libc.threads_minus_1 is zero. */ -+ libc.threads_minus_1--; -+ self->next->prev = self->prev; -+ self->prev->next = self->next; -+ self->prev = self->next = self; -+ - /* This atomic potentially competes with a concurrent pthread_detach - * call; the loser is responsible for freeing thread resources. */ - int state = a_cas(&self->detach_state, DT_JOINABLE, DT_EXITING); |