diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2022-05-31 17:13:35 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2022-06-08 09:23:02 -0300 |
commit | c7d36dcecc08a29825175f65c4ee873ff3177a23 (patch) | |
tree | d59c11ae89ad4d87b65cc9f742c25cc87c2cd9c5 /nptl | |
parent | c28db9cb29a7d6cf3ce08fd8445e6b7dea03f35b (diff) | |
download | glibc-c7d36dcecc08a29825175f65c4ee873ff3177a23.zip glibc-c7d36dcecc08a29825175f65c4ee873ff3177a23.tar.gz glibc-c7d36dcecc08a29825175f65c4ee873ff3177a23.tar.bz2 |
nptl: Fix __libc_cleanup_pop_restore asynchronous restore (BZ#29214)
This was due a wrong revert done on 404656009b459658.
Checked on x86_64-linux-gnu.
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/libc-cleanup.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/nptl/libc-cleanup.c b/nptl/libc-cleanup.c index c4a8359..2ce5938 100644 --- a/nptl/libc-cleanup.c +++ b/nptl/libc-cleanup.c @@ -57,7 +57,8 @@ __libc_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer) THREAD_SETMEM (self, cleanup, buffer->__prev); int cancelhandling = atomic_load_relaxed (&self->cancelhandling); - if (cancelhandling & CANCELTYPE_BITMASK) + if (buffer->__canceltype != PTHREAD_CANCEL_DEFERRED + && (cancelhandling & CANCELTYPE_BITMASK) == 0) { int newval; do |