summary refs log tree commit diff
path: root/nptl
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@codesourcery.com>2012-03-08 10:45:05 +0100
committerThomas Schwinge <thomas@codesourcery.com>2012-03-08 10:45:05 +0100
commitc564a81246d0064eb12bc34cac8996709a0ecbfc (patch)
tree5558f62e61462549cdabd738adda10e22126949a /nptl
parent48aff7765b16851c4c3c5b7beb44c878d0d24ae8 (diff)
downloadglibc-c564a81246d0064eb12bc34cac8996709a0ecbfc.tar.gz
glibc-c564a81246d0064eb12bc34cac8996709a0ecbfc.tar.xz
glibc-c564a81246d0064eb12bc34cac8996709a0ecbfc.zip
Invalid timeouts in SH sem_timedwait.
We adjusted nwaiters even though this isn't necessary.
Diffstat (limited to 'nptl')
-rw-r--r--nptl/ChangeLog3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S9
2 files changed, 8 insertions, 4 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 6cf6b3fed9..cd70329abb 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,5 +1,8 @@
 2012-03-08  Thomas Schwinge  <thomas@codesourcery.com>
 
+	* sysdeps/unix/sysv/linux/sh/sem_timedwait.S (sem_timedwait): Fix
+	updating nwaiters.
+
 	* tst-sem13.c (do_test): Add another test case.
 	* sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
 	Fix updating nwaiters.
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S b/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S
index d47362fc68..c26e5aa4cb 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004, 2007, 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -69,8 +69,8 @@ sem_timedwait:
 	mov.l	@(4,r9), r0
 	mov.l	.L1g, r1
 	cmp/hs	r1, r0
-	bt/s	6f
-	 mov	#EINVAL, r0
+	bt/s	.Lerrno_exit
+	 mov	#EINVAL, r10
 	INC (@(NWAITERS,r8),r2)
 
 7:
@@ -168,6 +168,8 @@ sem_timedwait:
 	neg	r0, r0
 6:
 	mov	r0, r10
+	DEC (@(NWAITERS,r8), r2)
+.Lerrno_exit:
 	mova	.Lgot2, r0
 	mov.l	.Lgot2, r12
 	add	r0, r12
@@ -182,7 +184,6 @@ sem_timedwait:
 	.long	errno@GOTTPOFF
 .Lexit:
 	mov.l	r10, @r0
-	DEC (@(NWAITERS,r8), r2)
 	bra	10b
 	 mov	#-1, r0