Fix infloop in __pthread_disable_asynccancel on x86_64

This commit is contained in:
Andreas Schwab 2009-11-27 21:37:30 -08:00 committed by Ulrich Drepper
parent e2c59de609
commit b55ec98c64
2 changed files with 8 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2009-11-27 Andreas Schwab <schwab@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/cancellation.S: Reload
THREAD_SELF->cancelhandling after returning from futex call.
2009-11-24 Ulrich Drepper <drepper@redhat.com>
* tst-sem13.c: New file.

View File

@ -96,8 +96,8 @@ ENTRY(__pthread_disable_asynccancel)
cmpxchgl %r11d, %fs:CANCELHANDLING
jnz 2b
3: movl %r11d, %eax
andl $(TCB_CANCELING_BITMASK|TCB_CANCELED_BITMASK), %eax
movl %r11d, %eax
3: andl $(TCB_CANCELING_BITMASK|TCB_CANCELED_BITMASK), %eax
cmpl $TCB_CANCELING_BITMASK, %eax
je 4f
1: ret
@ -111,5 +111,6 @@ ENTRY(__pthread_disable_asynccancel)
addq $CANCELHANDLING, %rdi
LOAD_PRIVATE_FUTEX_WAIT (%esi)
syscall
movl %fs:CANCELHANDLING, %eax
jmp 3b
END(__pthread_disable_asynccancel)