From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 92199 invoked by alias); 20 Oct 2015 15:47:17 -0000 Mailing-List: contact glibc-bugs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: glibc-bugs-owner@sourceware.org Received: (qmail 92121 invoked by uid 55); 20 Oct 2015 15:47:13 -0000 From: "cvs-commit at gcc dot gnu.org" To: glibc-bugs@sourceware.org Subject: [Bug nptl/18743] PowerPC: findutils testcase fails with --enable-lock-elision Date: Tue, 20 Oct 2015 15:47:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: glibc X-Bugzilla-Component: nptl X-Bugzilla-Version: 2.21 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: cvs-commit at gcc dot gnu.org X-Bugzilla-Status: RESOLVED X-Bugzilla-Resolution: FIXED X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: tuliom at linux dot vnet.ibm.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: security- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-10/txt/msg00265.txt.bz2 https://sourceware.org/bugzilla/show_bug.cgi?id=18743 --- Comment #3 from cvs-commit at gcc dot gnu.org --- This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU C Library master sources". The branch, release/2.22/master has been updated via 5b319ce2949cf6fb97862ff81558944f76c704f1 (commit) from 5fb7924cb6cf606ce865122e5bbac9df934db14e (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5b319ce2949cf6fb97862ff81558944f76c704f1 commit 5b319ce2949cf6fb97862ff81558944f76c704f1 Author: Tulio Magno Quites Machado Filho Date: Wed Jul 22 09:26:02 2015 -0300 PowerPC: Fix a race condition when eliding a lock The previous code used to evaluate the preprocessor token is_lock_free to a variable before starting a transaction. This behavior can cause an error if another thread got the lock (without using a transaction) between the evaluation of the token and the beginning of the transaction. This bug can be triggered with the following order of events: 1. The lock accessed by is_lock_free is free. 2. Thread T1 evaluates is_lock_free and stores into register R1 that the lock is free. 3. Thread T2 acquires the same lock used in is_lock_free. 4. T1 begins the transaction, creating a memory barrier where is_lock_free is false, but R1 is true. 5. T1 reads R1 and doesn't abort the transaction. 6. T1 calls ELIDE_UNLOCK, which reads false from is_lock_free and decides to unlock a lock acquired by T2, leading to undefined behavior. This patch delays the evaluation of is_lock_free to inside a transaction by moving this part of the code to the macro ELIDE_LOCK. [BZ #18743] * sysdeps/powerpc/nptl/elide.h (__elide_lock): Move most of this code to... (ELIDE_LOCK): ...here. (__get_new_count): New function with part of the code from __elide_lock that updates the value of adapt_count after a transaction abort. (__elided_trylock): Moved this code to... (ELIDE_TRYLOCK): ...here. (cherry picked from commit 6ec52bf634b7650b57ff67b5f5053bce8992d549) ----------------------------------------------------------------------- Summary of changes: ChangeLog | 12 ++++ NEWS | 4 +- sysdeps/powerpc/nptl/elide.h | 115 +++++++++++++++++++++++------------------- 3 files changed, 77 insertions(+), 54 deletions(-) -- You are receiving this mail because: You are on the CC list for the bug.