aboutsummaryrefslogtreecommitdiff
path: root/nptl/libc-cleanup.c
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/libc-cleanup.c')
-rw-r--r--nptl/libc-cleanup.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/nptl/libc-cleanup.c b/nptl/libc-cleanup.c
index c4a83591bf..2ce59388d4 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