Fix infloop in __pthread_disable_asynccancel on x86_64
This commit is contained in:
parent
e2c59de609
commit
b55ec98c64
|
@ -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>
|
2009-11-24 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* tst-sem13.c: New file.
|
* tst-sem13.c: New file.
|
||||||
|
|
|
@ -96,8 +96,8 @@ ENTRY(__pthread_disable_asynccancel)
|
||||||
cmpxchgl %r11d, %fs:CANCELHANDLING
|
cmpxchgl %r11d, %fs:CANCELHANDLING
|
||||||
jnz 2b
|
jnz 2b
|
||||||
|
|
||||||
3: movl %r11d, %eax
|
movl %r11d, %eax
|
||||||
andl $(TCB_CANCELING_BITMASK|TCB_CANCELED_BITMASK), %eax
|
3: andl $(TCB_CANCELING_BITMASK|TCB_CANCELED_BITMASK), %eax
|
||||||
cmpl $TCB_CANCELING_BITMASK, %eax
|
cmpl $TCB_CANCELING_BITMASK, %eax
|
||||||
je 4f
|
je 4f
|
||||||
1: ret
|
1: ret
|
||||||
|
@ -111,5 +111,6 @@ ENTRY(__pthread_disable_asynccancel)
|
||||||
addq $CANCELHANDLING, %rdi
|
addq $CANCELHANDLING, %rdi
|
||||||
LOAD_PRIVATE_FUTEX_WAIT (%esi)
|
LOAD_PRIVATE_FUTEX_WAIT (%esi)
|
||||||
syscall
|
syscall
|
||||||
|
movl %fs:CANCELHANDLING, %eax
|
||||||
jmp 3b
|
jmp 3b
|
||||||
END(__pthread_disable_asynccancel)
|
END(__pthread_disable_asynccancel)
|
||||||
|
|
Loading…
Reference in New Issue