diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-02-22 19:37:31 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-02-22 19:37:31 +0000 |
commit | a8fd5a02d94dcbe9a75252a66d2d73b41b9a2c83 (patch) | |
tree | 25310d8d27f7cd221a2d7450d0b4d0e23b2791e7 /nptl/sysdeps/unix/sysv/linux/i386/i486 | |
parent | c91b8752c35d0d6b59419e3d39a7bd3dc1b45cc0 (diff) |
Update.
2004-02-22 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Pop register
content also in case of an overflow in the parameter.
Reported by Momchil Velikov <velco@fadata.bg>.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/i386/i486')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S index c5ec154af2..600ba75874 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. @@ -50,26 +50,25 @@ __lll_mutex_lock_wait: xorl %esi, %esi /* No timeout. */ xorl %ecx, %ecx /* movl $FUTEX_WAIT, %ecx */ -1: cmpl %edx, %eax /* NB: %edx == 2 */ - je 3f + cmpl %edx, %eax /* NB: %edx == 2 */ + je 1f - movl $1, %eax - LOCK - cmpxchgl %edx, (%ebx) + movl %edx, %eax + xchgl %eax, (%ebx) /* NB: lock is implied */ testl %eax, %eax je 2f -3: movl $SYS_futex, %eax +1: movl $SYS_futex, %eax ENTER_KERNEL - xorl %eax, %eax -2: LOCK - cmpxchgl %edx, (%ebx) + movl %edx, %eax + xchgl %eax, (%ebx) /* NB: lock is implied */ + testl %eax, %eax jnz,pn 1b - popl %esi +2: popl %esi popl %ebx popl %edx ret |