Sophie

Sophie

distrib > Mandriva > 2010.2 > x86_64 > by-pkgid > e0ecf1de97625bd665ba6741f8b282d6 > files > 25

glibc-2.11.1-8mnb2.src.rpm

From 37204adee18f4be7c87a8fb9c59b23bf79d38e48 Mon Sep 17 00:00:00 2001
From: Ulrich Drepper <drepper@redhat.com>
Date: Sat, 12 Dec 2009 11:06:23 -0800
Subject: [PATCH 2/4] Invalid timeouts in i386 sem_timedwait.

We adjusted nwaiters even though this isn't necessary.

(adjusted cherry-pick from 9554ebf2d4da22591e974d3cf2ed09a2b8dbdbd8)
---
 nptl/ChangeLog                                     |    5 +++++
 .../unix/sysv/linux/i386/i486/sem_timedwait.S      |   18 +++++++++---------
 2 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 811ca50..281945c 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  Andreas Schwab  <schwab@redhat.com>
 
 	* sysdeps/unix/sysv/linux/x86_64/cancellation.S: Reload
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 13a36d6..18013a8 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:
 
-- 
1.7.0