about summary refs log tree commit diff
path: root/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S10
1 files changed, 9 insertions, 1 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
index 2e99ac669a..b275b8b922 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
@@ -27,6 +27,7 @@
 #define FUTEX_WAKE		1
 
 #define EAGAIN		11
+#define EINVAL		22
 #define EDEADLK		35
 #define ETIMEDOUT	110
 
@@ -71,7 +72,11 @@ pthread_rwlock_timedrdlock:
 	cmpl	$0, FLAGS(%ebp)
 	je	5f
 
-3:	incl	READERS_QUEUED(%ebp)
+	/* Check the value of the timeout parameter.  */
+3:	cmpl	$1000000000, 4(%edi)
+	jae	19f
+
+	incl	READERS_QUEUED(%ebp)
 	je	4f
 
 	LOCK
@@ -189,4 +194,7 @@ pthread_rwlock_timedrdlock:
 
 18:	movl	$ETIMEDOUT, %ecx
 	jmp	9b
+
+19:	movl	$EINVAL, %ecx
+	jmp	9b
 	.size	pthread_rwlock_timedrdlock,.-pthread_rwlock_timedrdlock