diff --git a/glibc.changes b/glibc.changes index b0d5943..497be43 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu Jul 14 11:21:34 UTC 2022 - Andreas Schwab + +- nptl-cleanup-async-restore-2.patch: nptl: Fix + ___pthread_unregister_cancel_restore asynchronous restore (bsc#1200093, + BZ #29214) + ------------------------------------------------------------------- Thu Jun 23 09:46:45 UTC 2022 - Andreas Schwab diff --git a/glibc.spec b/glibc.spec index 1896a5f..3ac3158 100644 --- a/glibc.spec +++ b/glibc.spec @@ -303,6 +303,8 @@ Patch1007: nptl-cleanup-async-restore.patch Patch1008: read-chk-cancel.patch # PATCH-FIX-UPSTREAM wcrtomb: Make behavior POSIX compliant Patch1009: wcrtomb-fortify.patch +# PATCH-FIX-UPSTREAM nptl: Fix ___pthread_unregister_cancel_restore asynchronous restore (BZ #29214) +Patch1010: nptl-cleanup-async-restore-2.patch ### # Patches awaiting upstream approval @@ -536,6 +538,7 @@ library in a cross compilation setting. %patch1007 -p1 %patch1008 -p1 %patch1009 -p1 +%patch1010 -p1 %patch2000 -p1 %patch2001 -p1 diff --git a/nptl-cleanup-async-restore-2.patch b/nptl-cleanup-async-restore-2.patch new file mode 100644 index 0000000..9d8fcb0 --- /dev/null +++ b/nptl-cleanup-async-restore-2.patch @@ -0,0 +1,31 @@ +From 51e2d3b53bd08a21e5a9a4ed095abd2c61f622bc Mon Sep 17 00:00:00 2001 +From: Adhemerval Zanella +Date: Wed, 13 Jul 2022 10:37:32 -0300 +Subject: [PATCH] nptl: Fix ___pthread_unregister_cancel_restore asynchronous + restore + +This was due a wrong revert done on 404656009b459658. + +Checked on x86_64-linux-gnu and i686-linux-gnu. + +(cherry picked from commit f27e5e21787abc9f719879af47687221aa1027b3) +--- + nptl/cleanup_defer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/nptl/cleanup_defer.c b/nptl/cleanup_defer.c +index eb0bc77740..4e864ead32 100644 +--- a/nptl/cleanup_defer.c ++++ b/nptl/cleanup_defer.c +@@ -71,7 +71,7 @@ ___pthread_unregister_cancel_restore (__pthread_unwind_buf_t *buf) + return; + + int cancelhandling = atomic_load_relaxed (&self->cancelhandling); +- if (cancelhandling & CANCELTYPE_BITMASK) ++ if ((cancelhandling & CANCELTYPE_BITMASK) == 0) + { + int newval; + do +-- +2.37.1 +