summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-12-12 11:06:23 -0800
committerUlrich Drepper <drepper@redhat.com>2009-12-12 11:06:23 -0800
commit9554ebf2d4da22591e974d3cf2ed09a2b8dbdbd8 (patch)
treef4cfc015f17f3eba95b96f80161a0f8b121ded86
parent2de59be022b924ef3d21375aca50a10e971942f8 (diff)
downloadglibc-9554ebf2d4da22591e974d3cf2ed09a2b8dbdbd8.tar.gz
glibc-9554ebf2d4da22591e974d3cf2ed09a2b8dbdbd8.tar.xz
glibc-9554ebf2d4da22591e974d3cf2ed09a2b8dbdbd8.zip
Invalid timeouts in i386 sem_timedwait.
We adjusted nwaiters even though this isn't necessary.
-rw-r--r--nptl/ChangeLog5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S18
2 files changed, 14 insertions, 9 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 494b5904fb..3d9a60afc5 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
+	Don't update nwaiters after invalid timeout is recognized.
+
 2009-11-27  Thomas Schwinge  <thomas@codesourcery.com>
 
 	* sysdeps/unix/sysv/linux/sh/pt-initfini.c (_init): Don't call
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
index 13a36d64cc..18013a8df4 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -131,10 +131,10 @@ sem_timedwait:
 
 	xorl	%eax, %eax
 
-10:	LOCK
+	LOCK
 	decl	NWAITERS(%ebx)
 
-	addl	$12, %esp
+10:	addl	$12, %esp
 .Ladd_esp:
 	popl	%ebx
 .Lpop_ebx:
@@ -268,19 +268,19 @@ sem_wait_cleanup:
 	.byte	14				# DW_CFA_def_cfa_offset
 	.uleb128 8
 	.byte   0x86				# DW_CFA_offset %esi
-        .uleb128 2
+	.uleb128 2
 	.byte	4				# DW_CFA_advance_loc4
 	.long	.Lpush_edi-.Lpush_esi
 	.byte	14				# DW_CFA_def_cfa_offset
 	.uleb128 12
 	.byte   0x87				# DW_CFA_offset %edi
-        .uleb128 3
+	.uleb128 3
 	.byte	4				# DW_CFA_advance_loc4
 	.long	.Lpush_ebx-.Lpush_edi
 	.byte	14				# DW_CFA_def_cfa_offset
 	.uleb128 16
 	.byte   0x83				# DW_CFA_offset %ebx
-        .uleb128 4
+	.uleb128 4
 	.byte	4				# DW_CFA_advance_loc4
 	.long	.Lsub_esp-.Lpush_ebx
 	.byte	14				# DW_CFA_def_cfa_offset
@@ -309,11 +309,11 @@ sem_wait_cleanup:
 	.byte	14				# DW_CFA_def_cfa_offset
 	.uleb128 28
 	.byte   0x86				# DW_CFA_offset %esi
-        .uleb128 2
+	.uleb128 2
 	.byte   0x87				# DW_CFA_offset %edi
-        .uleb128 3
+	.uleb128 3
 	.byte   0x83				# DW_CFA_offset %ebx
-        .uleb128 4
+	.uleb128 4
 	.align	4
 .LENDFDE: