Bug 16657 - Lock elision breaks pthread_mutex_destroy
Summary: Lock elision breaks pthread_mutex_destroy
Status: RESOLVED FIXED
Alias: None
Product: glibc
Classification: Unclassified
Component: nptl (show other bugs)
Version: 2.18
: P2 normal
Target Milestone: 2.21
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-03-04 09:07 UTC by Andreas Schwab
Modified: 2015-08-28 20:43 UTC (History)
11 users (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:
fweimer: security-


Attachments
Testcase (247 bytes, text/plain)
2014-03-04 09:07 UTC, Andreas Schwab
Details
Properly handle forced elision in pthread_mutex_trylock (600 bytes, patch)
2014-03-04 12:03 UTC, Andreas Schwab
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Andreas Schwab 2014-03-04 09:07:36 UTC
Created attachment 7449 [details]
Testcase

$ ./mutex-trylock 
./mutex-trylock: pthread_mutex_destroy failed with 16
Comment 1 Andreas Schwab 2014-03-04 12:03:05 UTC
Created attachment 7450 [details]
Properly handle forced elision in pthread_mutex_trylock
Comment 2 Rich Felker 2014-03-04 17:51:35 UTC
This patch looks inconsistent with the comment that happened to get quoted in it from line 33:

/* We don't force elision in trylock, because this can lead to inconsistent
   lock state if the lock was actually busy.  */

There was a huge thread on the mailing list about elision and trylock with normal-type mutexes at the time elision was added, and I'm highly skeptical of such a trivial-looking fix; it seems to break trylock semantics.
Comment 3 Andi Kleen 2014-03-05 00:32:05 UTC
The patch is wrong. Adds a race.

The return value of pthread_mutex_destroy is undefined. I originally couldn't find any software that cares about this, so it was changed. If someone really cares about the return value the "right" change would be to add an abort to destroy.
Comment 4 Rich Felker 2014-03-05 01:12:26 UTC
pthread_mutex_destroy has no mandatory errors and has no way it can fail except when undefined behavior has been invoked, so the cheapest solution would be making it always return 0 if elision is in use.
Comment 5 Michael Matz 2014-03-05 14:14:35 UTC
See e.g. https://bugzilla.novell.com/show_bug.cgi?id=865968 for software
that does check the return code of pthread_mutex_destroy.  Andi: the return
value of _destroy is not undefined, it may fail with EBUSY or EINVAL under
very specific circumstances.  In the case given it must not fail.
Comment 6 Rich Felker 2014-03-05 17:57:05 UTC
It's certainly not "undefined", It's required to return 0 on success, and there are no defined errors for destroy in POSIX, so any error returned would need to be implementation-defined or occur only in the case of undefined behavior.
Comment 7 Carlos O'Donell 2014-03-06 16:03:38 UTC
(In reply to Rich Felker from comment #6)
> It's certainly not "undefined", It's required to return 0 on success, and
> there are no defined errors for destroy in POSIX, so any error returned
> would need to be implementation-defined or occur only in the case of
> undefined behavior.

I agree. With elision you can't detect the EINVAL or EBUSY cases, therefore returning 0 when elision is enabled is the best solution.

What do you think Andi?
Comment 8 Torvald Riegel 2014-03-10 14:14:23 UTC
I agree that we should return 0 -- but why do we see this in pthread_mutex_destroy at all?  https://bugzilla.novell.com/show_bug.cgi?id=865968 states that nusers isn't correct on destruction.  If that's the case, ISTM that this should be fixed, not anything in pthread_mutex_destroy.
Comment 9 scott snyder 2014-03-18 15:31:46 UTC
Just switched to a new machine and promptly ran into this problem...

The boost thread wrappers check the abort on a failing return
from pthread_mutex_destroy:

  ~mutex()
  {
    BOOST_VERIFY(!posix::pthread_mutex_destroy(&m));
  }

Locking multiple times, as in the attached test case, is not necessary;
i can reproduce the problem with sequence like this:

  pthread_mutex_t m;
  if (pthread_mutex_init(&m, NULL) != 0) abort();
  pthread_mutex_trylock(&m);
  pthread_mutex_unlock (&m);
  if (pthread_mutex_destroy (&m) != 0) abort();


I think i see what the problem is.

In pthread_mutex_lock, we have this sequence:

  if (__builtin_expect (type == PTHREAD_MUTEX_TIMED_NP, 1))
    {
      FORCE_ELISION (mutex, goto elision);

FORCE_ELISION sets the PTHREAD_MUTEX_ELISION_NP flag in the lock's
type field, and then proceeds to do the elided lock.  The owner/users
fields are not updated in this case.

In pthread_mutex_unlock the first test fails because elision bit is set;
the second succeeds, and we do the elided unlock which again does not
change the owner/users flags:

  if (__builtin_expect (type, PTHREAD_MUTEX_TIMED_NP)
      == PTHREAD_MUTEX_TIMED_NP)
    {
      /* Always reset the owner field.  */
      ...
    }
  else if (__builtin_expect (type == PTHREAD_MUTEX_TIMED_ELISION_NP, 1))
    {
      /* Don't reset the owner/users fields for elision.  */
      return lll_unlock_elision (mutex->__data.__lock,
				      PTHREAD_MUTEX_PSHARED (mutex));


In trylock, however, we use DO_ELISION rather than FORCE_ELISION:

    case PTHREAD_MUTEX_TIMED_ELISION_NP:
    elision:
      if (lll_trylock_elision (mutex->__data.__lock,
			       mutex->__data.__elision) != 0)
        break;
      /* Don't record the ownership.  */
      return 0;

    case PTHREAD_MUTEX_TIMED_NP:
      if (DO_ELISION (mutex))
	goto elision;
      /*FALL THROUGH*/


DO_ELISION does _not_ set the elision bit in the type field.
If the lock was orginally free, the trylock succeeds, and does not
adjust the owner/user fields.

But then when we try to unlock after a trylock, the elision bit is still
clear.  So we take the code path starting at the comment 

      /* Always reset the owner field.  */

which proceeds to decrement the user field, corrupting the lock.

This problem might be fixable by changing the DO_ELISION in
pthread_mutex_trylock to FORCE_ELISION (though i haven't yet tried that).

I have checked that if i do a pthread_mutex_lock/pthread_mutex_unlock
on the lock before the first trylock, then the problem goes away,
as expected from the above analysis (since the lock will set the
elision flag).
Comment 10 Andi Kleen 2014-04-04 22:31:52 UTC
The reason I originally used DO_ELISION was that I was worried about two parallel trylocks coming in here, and also corrupting the lock state.

But yes that fix may have been worse than the original problem, especially since once the elision flag is set we don't care anymore.

So likely Andreas' original fix is the right one. Use FORCE_ELISION always.

Returning 0 in mutex_destroy would also work, but it could leave the mutex in some awkward immediate state.
Comment 11 Sourceware Commits 2014-05-28 12:09:14 UTC
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, azanella/lockelision-ppc has been created
        at  9e49e8d39848648aa8805fcaa0dacddbfc23cb2f (commit)

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9e49e8d39848648aa8805fcaa0dacddbfc23cb2f

commit 9e49e8d39848648aa8805fcaa0dacddbfc23cb2f
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Mar 21 08:26:59 2014 -0400

    PowerPC: Adjusting LE mutex destroy

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2eb8801af5c5437a2fc611b37ef88be190b40d54

commit 2eb8801af5c5437a2fc611b37ef88be190b40d54
Author: Andreas Schwab <schwab@suse.de>
Date:   Thu Mar 27 16:50:04 2014 -0400

    Skip checks in pthread_mutex_destroy when doing elision
    
    When doing elisison the __nusers field is not updated, thus can have an
    arbitrary value.
    
    	[BZ #16657]
    	* nptl/pthread_mutex_destroy.c (__pthread_mutex_destroy): Skip
    	checks when doing elision.
    	* nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_destroy.c: New
    	* file.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=81fae2105ca9a8384ccdf9ecc9a224c47fbce0a4

commit 81fae2105ca9a8384ccdf9ecc9a224c47fbce0a4
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Dec 13 15:59:35 2013 -0500

    PowerPC: Add the low level infrastructure for pthreads lock elision

-----------------------------------------------------------------------
Comment 12 Florian Weimer 2014-06-16 16:41:47 UTC
Is it conceivable that this might trigger application aborts, resulting in denial-service issues?

It appears that this was introduced with elision support in glibc 2.18, and fixed in commit 2eb8801af5c5437a2fc611b37ef88be190b40d54/
Comment 13 Rich Felker 2014-06-16 16:49:47 UTC
Yes, see comment #5. But if you're asking about security flag, my impression was that so far the security flag is only being used where the bug leads directly to a security problem more serious than plain DoS.
Comment 14 Florian Weimer 2014-06-16 16:54:58 UTC
(In reply to Rich Felker from comment #13)
> Yes, see comment #5. But if you're asking about security flag, my impression
> was that so far the security flag is only being used where the bug leads
> directly to a security problem more serious than plain DoS.

I was asking about real-world application impact, e.g. "we discovered this bug because Apache httpd was crashing after processing a certain sequence of requests" (purely hypothetically speaking).  It's not always easy to draw the line between a reliability bug which manifests somewhat randomly, and a denial-of-service vulnerability which can be triggered with some non-negligible probability (which will approach 1 after a sufficient number of attempts).
Comment 15 Andreas Schwab 2014-06-16 17:10:23 UTC
This hasn't been fixed yet.
Comment 16 Sourceware Commits 2014-06-17 17:39:18 UTC
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, azanella/lockelision-ppc has been created
        at  1496dfe9b65f53746c749e25b3c09073afa8cb7a (commit)

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1496dfe9b65f53746c749e25b3c09073afa8cb7a

commit 1496dfe9b65f53746c749e25b3c09073afa8cb7a
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Mar 21 08:26:59 2014 -0400

    PowerPC: Adjusting LE mutex destroy

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=50ffc83fb6511eb63df4a8f4c03ab998da06488a

commit 50ffc83fb6511eb63df4a8f4c03ab998da06488a
Author: Andreas Schwab <schwab@suse.de>
Date:   Thu Mar 27 16:50:04 2014 -0400

    Skip checks in pthread_mutex_destroy when doing elision
    
    When doing elisison the __nusers field is not updated, thus can have an
    arbitrary value.
    
    	[BZ #16657]
    	* nptl/pthread_mutex_destroy.c (__pthread_mutex_destroy): Skip
    	checks when doing elision.
    	* nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_destroy.c: New
    	* file.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=cb59eaef602f7980987ade60e4ad87315bcf49c3

commit cb59eaef602f7980987ade60e4ad87315bcf49c3
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Dec 13 15:59:35 2013 -0500

    PowerPC: Add the low level infrastructure for pthreads lock elision

-----------------------------------------------------------------------
Comment 17 Sourceware Commits 2014-06-25 19:23:39 UTC
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, azanella/lockelision-ppc has been created
        at  52b090ceaa0a26109bed23dbef41bd2c9c349fb6 (commit)

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=52b090ceaa0a26109bed23dbef41bd2c9c349fb6

commit 52b090ceaa0a26109bed23dbef41bd2c9c349fb6
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Jun 25 15:14:27 2014 -0400

    PowerPC: Fix TLE for rwlock and cond vars

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=872a452a3cfb4e4998749a71070c361f4cc3687f

commit 872a452a3cfb4e4998749a71070c361f4cc3687f
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Jun 25 15:13:46 2014 -0400

    PowerPC: Add adaptive elision to rwlocks

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8371e721e0420f41713386d105fa1089241b249c

commit 8371e721e0420f41713386d105fa1089241b249c
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Mar 21 08:26:59 2014 -0400

    PowerPC: Adjusting LE mutex destroy

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=831e93ca666fd7423ef79cd54a3cc53047f37e62

commit 831e93ca666fd7423ef79cd54a3cc53047f37e62
Author: Andreas Schwab <schwab@suse.de>
Date:   Thu Mar 27 16:50:04 2014 -0400

    Skip checks in pthread_mutex_destroy when doing elision
    
    When doing elisison the __nusers field is not updated, thus can have an
    arbitrary value.
    
    	[BZ #16657]
    	* nptl/pthread_mutex_destroy.c (__pthread_mutex_destroy): Skip
    	checks when doing elision.
    	* nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_destroy.c: New
    	* file.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ac7744c948ac85edd955cfaf4c3c96170e1fefee

commit ac7744c948ac85edd955cfaf4c3c96170e1fefee
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Dec 13 15:59:35 2013 -0500

    PowerPC: Add the low level infrastructure for pthreads lock elision

-----------------------------------------------------------------------
Comment 18 Jeffrey M. Birnbaum 2014-07-02 15:48:08 UTC
I'm consistently seeing this issue when using pthread_mutex_trylock, i.e. trylock does not work properly, it does not get the lock when I know that the lock is not being held. Is there an ETA when it might be fixed. 

I am using Fedora 19:

Linux ivybridge 3.13.10-200.fc20.x86_64 #1 SMP Mon Apr 14 20:34:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

and

GNU C Library (GNU libc) stable release version 2.18, by Roland McGrath et al.
Compiled by GNU CC version 4.8.2 20131212 (Red Hat 4.8.2-7).
Compiled on a Linux 3.12.8 system on 2014-01-23.
Comment 19 Rich Felker 2014-07-02 16:19:31 UTC
Jeffrey, I don't see any indication that the issue you're experiencing is the same as this one. If you have information that suggests it is, please share. You might also check whether the fix for this bug fixed your issue. If you don't have reason to believe it's the same bug, please file a new bug report with details on your issue.
Comment 20 Jeffrey M. Birnbaum 2014-07-02 17:19:36 UTC
Let me elaborate as to what I see and you can perhaps help me determine if it is the same (or similar) issue reported here. If not, then I will submit a separate bug report (TIA).

here is the an outline of the code being used:

// assume that construction result in pthread_mutex_trylock where an 
// internal isLocked variable is set to true if the the call returns 0.

mutex_lock::try_lock_guard guard(_db_lock);
if (!guard.isLocked())
{
   // assume timer is returning elapsed time in seconds
   while(!guard.isLocked() && timer.elapsedTime() < 1.0)
   {
      millisleep(1);
      guard.lock(); // will call try_lock and set locked flag inside guard
   }
}

When I run this code compiled with gcc 4.8.2 on my Linux 3.12.8 system (with Haswell processor) I observe that if try_lock fails to get the lock then it never succeeds to to get the lock. And I know (from tracing) that the lock has been released during the time that this code is executing (and that other thread that does release does not attempt to get the lock more than once a second).

At first I thought this might be a compiler bug where isLocked() is not being reevaluated each time in the loop but then I came across this report which makes me suspect it is an elision bug not a compiler bug. If it were a compiler bug then I would be quite unnerved and would stop using gcc 4.8.2.

Does this help?
Comment 21 Rich Felker 2014-07-02 18:07:32 UTC
Judging from the description, I suspect this is just a bug in your code (lack of synchronization when accessing data read/written by other threads) and neither a glibc bug nor a gcc bug. An "outline of the code" is definitely not sufficient to determine this since the potential bug is in the details. A minimal self-contained reproducible test case is needed.
Comment 22 Jeffrey M. Birnbaum 2014-07-02 18:18:26 UTC
Well, I find that comment somewhat offensive, i.e. a bug in my code. I only showed an outline so that you could comment on whether or not the trylock elision issue was related to what I am observing. 

I can certainly understand why you would say that given that a reproducible test is the best proof of an issue. However, in your response you said "if you have more information, please share" so that is what I did. I'm not sure I deserved the "well, most likely a bug in your code where you don't sync read/write properly". 

Regardless, I will try to create a simple test case the repro's the issue. I can assure you that there are no other variables involved in what I described that come into play. In fact, the description is almost verbatim the code. The only shared object is the pthread mutex and I think that was fairly clear from the code snippet.
Comment 23 Andi Kleen 2014-07-03 03:11:54 UTC
Jeffrey,

If there's a problem it's not related to this bug. Please open a new bug.

Also to check for data races as Rich suggested please test your application with valgrind/helgrind or ThreadSanitizer.

If there's still a problem a self contained test program would be useful.
Comment 24 Jeffrey M. Birnbaum 2014-07-03 03:24:21 UTC
Thanks Andi.

I would like to create a simple test case (the code is certainly quite simple) but it might be hard to "make it happen" without additional scheduler pressure (might have to manufacture). Also, I don't see it fail all of the time. And the odd thing is that when it fails, it will fail continuously. I wonder if it might be code alignment issue where depending on how stuff is arranged I get fail or no fail. Lastly, more evidence is that the only system the code fails on is glibc 2.18 plus Haswell. Can't seem to repro on various other machines (ivy and sandy).

Regardless, I will work on a test case because I know what I observe is a scenario where try_lock fails in the case where another thread had the lock and then released it.
Comment 25 Andreas Schwab 2014-07-03 16:50:47 UTC
Do not close this bug until it is fixed.
Comment 26 Sourceware Commits 2014-07-21 20:43:28 UTC
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, azanella/lockelision-ppc has been created
        at  58c786666e06b4d31f6d69ba846d2302e4f5af4c (commit)

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=58c786666e06b4d31f6d69ba846d2302e4f5af4c

commit 58c786666e06b4d31f6d69ba846d2302e4f5af4c
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Jun 25 15:13:46 2014 -0400

    PowerPC: Add adaptive elision to rwlocks

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=afc0f998d1840d3239ed794cd58b771a4287eb28

commit afc0f998d1840d3239ed794cd58b771a4287eb28
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Mar 21 08:26:59 2014 -0400

    PowerPC: Adjusting LE mutex destroy

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e47e7d86ac678ee4293da4295198a7eb45ecef01

commit e47e7d86ac678ee4293da4295198a7eb45ecef01
Author: Andreas Schwab <schwab@suse.de>
Date:   Thu Mar 27 16:50:04 2014 -0400

    Skip checks in pthread_mutex_destroy when doing elision
    
    When doing elisison the __nusers field is not updated, thus can have an
    arbitrary value.
    
    	[BZ #16657]
    	* nptl/pthread_mutex_destroy.c (__pthread_mutex_destroy): Skip
    	checks when doing elision.
    	* nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_destroy.c: New
    	* file.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=552210e08eff6b757356dfc120c05ec1417179ef

commit 552210e08eff6b757356dfc120c05ec1417179ef
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Dec 13 15:59:35 2013 -0500

    PowerPC: Add the low level infrastructure for pthreads lock elision

-----------------------------------------------------------------------
Comment 27 Sourceware Commits 2014-08-19 00:35:56 UTC
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, azanella/lockelision-ppc has been created
        at  01f9a2bfda7e99ed3a95250a24b7bf45c25bca94 (commit)

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=01f9a2bfda7e99ed3a95250a24b7bf45c25bca94

commit 01f9a2bfda7e99ed3a95250a24b7bf45c25bca94
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Mon Aug 18 17:34:00 2014 -0400

    powerpc32 fixes

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=558b909b2189cc79292fb719134b26565b10cd46

commit 558b909b2189cc79292fb719134b26565b10cd46
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Jun 25 15:13:46 2014 -0400

    PowerPC: Add adaptive elision to rwlocks

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3b5afff081da3beb1a047b9face01e9426327c05

commit 3b5afff081da3beb1a047b9face01e9426327c05
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Mar 21 08:26:59 2014 -0400

    PowerPC: Adjusting LE mutex destroy

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e6c831927e22129641abaf09aff278584937f448

commit e6c831927e22129641abaf09aff278584937f448
Author: Andreas Schwab <schwab@suse.de>
Date:   Thu Mar 27 16:50:04 2014 -0400

    Skip checks in pthread_mutex_destroy when doing elision
    
    When doing elisison the __nusers field is not updated, thus can have an
    arbitrary value.
    
    	[BZ #16657]
    	* nptl/pthread_mutex_destroy.c (__pthread_mutex_destroy): Skip
    	checks when doing elision.
    	* nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_destroy.c: New
    	* file.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=c3f96a10ee7cb19af1dcc9353e3a52ddebd8c87b

commit c3f96a10ee7cb19af1dcc9353e3a52ddebd8c87b
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Dec 13 15:59:35 2013 -0500

    PowerPC: Add the low level infrastructure for pthreads lock elision

-----------------------------------------------------------------------
Comment 28 Sourceware Commits 2014-08-22 11:52:19 UTC
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, azanella/lockelision-ppc has been created
        at  412d804e06543203a31c06988a809e7c88d06b2b (commit)

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=412d804e06543203a31c06988a809e7c88d06b2b

commit 412d804e06543203a31c06988a809e7c88d06b2b
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Aug 20 15:50:58 2014 -0400

    PowerPC: abort transaction in syscalls
    
    Linux kernel powerpc documentation states issuing a syscall inside a
    transaction is not recommended and may lead to undefined behavior. It
    also states syscalls does not abort transactoin neither they run in
    transactional state.
    
    To avoid side-effects bein visible outside transactions, GLIBC with lock
    elision enable issues a transaction abort instruction just before all
    syscalls if hardware supports hardware transactions.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=25a5dad5f14f747577a5cffeafcd8bd5a52b31bf

commit 25a5dad5f14f747577a5cffeafcd8bd5a52b31bf
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Jun 25 15:13:46 2014 -0400

    PowerPC: Add adaptive elision to rwlocks
    
    This patch adds support for lock elision using ISA 2.07 hardware
    transactional memory for rwlocks.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=00702011fff76cc94517889874359486995ef098

commit 00702011fff76cc94517889874359486995ef098
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Mar 21 08:26:59 2014 -0400

    PowerPC: Adjusting LE mutex destroy

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5421cda51f0c177cad1757dd69b9319a1db7155c

commit 5421cda51f0c177cad1757dd69b9319a1db7155c
Author: Andreas Schwab <schwab@suse.de>
Date:   Thu Mar 27 16:50:04 2014 -0400

    Skip checks in pthread_mutex_destroy when doing elision
    
    When doing elisison the __nusers field is not updated, thus can have an
    arbitrary value.
    
    	[BZ #16657]
    	* nptl/pthread_mutex_destroy.c (__pthread_mutex_destroy): Skip
    	checks when doing elision.
    	* nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_destroy.c: New
    	* file.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d3f269d75a82389717ddf041edadb0d4f8459dba

commit d3f269d75a82389717ddf041edadb0d4f8459dba
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Aug 20 15:57:10 2014 -0400

    PowerPC: Add the low level infrastructure for pthreads lock elision
    
    This patch adds support for lock elision using ISA 2.07 hardware
    transactional memory instructions.

-----------------------------------------------------------------------
Comment 29 Sourceware Commits 2014-08-25 13:05:45 UTC
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, azanella/lockelision-ppc has been created
        at  60027c63e2110612cd3b05a32c89c299a8e20a3a (commit)

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=60027c63e2110612cd3b05a32c89c299a8e20a3a

commit 60027c63e2110612cd3b05a32c89c299a8e20a3a
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Aug 20 15:50:58 2014 -0400

    PowerPC: abort transaction in syscalls
    
    Linux kernel powerpc documentation states issuing a syscall inside a
    transaction is not recommended and may lead to undefined behavior. It
    also states syscalls does not abort transactoin neither they run in
    transactional state.
    
    To avoid side-effects being visible outside transactions, GLIBC with lock
    elision enable issues a transaction abort instruction just before all
    syscalls if hardware supports hardware transactions.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f173d8d0dfb557c50c5d8bf26755716a444e2e0d

commit f173d8d0dfb557c50c5d8bf26755716a444e2e0d
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Jun 25 15:13:46 2014 -0400

    PowerPC: Add adaptive elision to rwlocks
    
    This patch adds support for lock elision using ISA 2.07 hardware
    transactional memory for rwlocks.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1fef4f021fe32317095e2bf936d54d530290d055

commit 1fef4f021fe32317095e2bf936d54d530290d055
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Mar 21 08:26:59 2014 -0400

    PowerPC: Adjusting LE mutex destroy
    
    This patch adjust the pthread_mutex_t destroy to take acocunt of lock
    elision.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=29e18b25d1b574bcaeb7422ec8b103e3463ba7b4

commit 29e18b25d1b574bcaeb7422ec8b103e3463ba7b4
Author: Andreas Schwab <schwab@suse.de>
Date:   Thu Mar 27 16:50:04 2014 -0400

    Skip checks in pthread_mutex_destroy when doing elision
    
    When doing elisison the __nusers field is not updated, thus can have an
    arbitrary value.
    
    	[BZ #16657]
    	* nptl/pthread_mutex_destroy.c (__pthread_mutex_destroy): Skip
    	checks when doing elision.
    	* nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_destroy.c: New
    	* file.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=247cf3825e280047de915f3dab767cae02c7cf98

commit 247cf3825e280047de915f3dab767cae02c7cf98
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Aug 20 15:57:10 2014 -0400

    PowerPC: Add the low level infrastructure for pthreads lock elision
    
    This patch adds support for lock elision using ISA 2.07 hardware
    transactional memory instructions.

-----------------------------------------------------------------------
Comment 30 Carlos O'Donell 2014-10-01 18:42:57 UTC
(In reply to Andreas Schwab from comment #25)
> Do not close this bug until it is fixed.

Is this fixed yet?

commit e47e7d86ac678ee4293da4295198a7eb45ecef01
Author: Andreas Schwab <schwab@suse.de>
Date:   Thu Mar 27 16:50:04 2014 -0400

    Skip checks in pthread_mutex_destroy when doing elision
    
    When doing elisison the __nusers field is not updated, thus can have an
    arbitrary value.
    
    	[BZ #16657]
    	* nptl/pthread_mutex_destroy.c (__pthread_mutex_destroy): Skip
    	checks when doing elision.
    	* nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_destroy.c: New
    	* file.
Comment 31 Andreas Schwab 2014-10-01 20:49:28 UTC
http://sourceware.org/git/?p=glibc.git;a=commit;h=e47e7d86ac678ee4293da4295198a7eb45ecef01

404 - Unknown commit object
Comment 32 Carlos O'Donell 2014-10-01 21:00:32 UTC
(In reply to Andreas Schwab from comment #31)
> http://sourceware.org/git/?p=glibc.git;a=commit;
> h=e47e7d86ac678ee4293da4295198a7eb45ecef01
> 
> 404 - Unknown commit object

It's on the private IBM branch. The question is, do you think that fixes the issue? Does it need review?
Comment 33 Adhemerval Zanella Netto 2014-10-01 21:04:50 UTC
Some disclaimer: I think the link came from my TLE port for PowerPC. I had included this patch because I thought it could help some issue in my port that was not really arising from this bugzilla in particular.
Comment 35 Sourceware Commits 2014-11-07 17:06:01 UTC
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, azanella/lockelision-ppc has been created
        at  9fba46fff61c04bb1ec8bec9ab51202ee6e1b2e4 (commit)

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=9fba46fff61c04bb1ec8bec9ab51202ee6e1b2e4

commit 9fba46fff61c04bb1ec8bec9ab51202ee6e1b2e4
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Aug 20 15:50:58 2014 -0400

    PowerPC: abort transaction in syscalls
    
    Linux kernel powerpc documentation states issuing a syscall inside a
    transaction is not recommended and may lead to undefined behavior. It
    also states syscalls does not abort transactoin neither they run in
    transactional state.
    
    To avoid side-effects being visible outside transactions, GLIBC with lock
    elision enable issues a transaction abort instruction just before all
    syscalls if hardware supports hardware transactions.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=7cb8358e83af829ba2756182d7d5a25ebb292fac

commit 7cb8358e83af829ba2756182d7d5a25ebb292fac
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Jun 25 15:13:46 2014 -0400

    PowerPC: Add adaptive elision to rwlocks
    
    This patch adds support for lock elision using ISA 2.07 hardware
    transactional memory for rwlocks.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=486e99da18df01e8cabbcaa578fcb6402c479a54

commit 486e99da18df01e8cabbcaa578fcb6402c479a54
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Mar 21 08:26:59 2014 -0400

    PowerPC: Adjusting LE mutex destroy
    
    This patch adjust the pthread_mutex_t destroy to take acocunt of lock
    elision.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f4335e87a7d5e2339123fbeaa0ef2f8f7797e6d4

commit f4335e87a7d5e2339123fbeaa0ef2f8f7797e6d4
Author: Andreas Schwab <schwab@suse.de>
Date:   Thu Mar 27 16:50:04 2014 -0400

    Skip checks in pthread_mutex_destroy when doing elision
    
    When doing elisison the __nusers field is not updated, thus can have an
    arbitrary value.
    
    	[BZ #16657]
    	* nptl/pthread_mutex_destroy.c (__pthread_mutex_destroy): Skip
    	checks when doing elision.
    	* nptl/sysdeps/unix/sysv/linux/x86/pthread_mutex_destroy.c: New
    	* file.

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=585a5fbda268d5ed265c5ecd81607c54864471ca

commit 585a5fbda268d5ed265c5ecd81607c54864471ca
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Wed Aug 20 15:57:10 2014 -0400

    PowerPC: Add the low level infrastructure for pthreads lock elision
    
    This patch adds support for lock elision using ISA 2.07 hardware
    transactional memory instructions.

-----------------------------------------------------------------------
Comment 36 Sourceware Commits 2014-12-11 11:45:23 UTC
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, master has been updated
       via  b0a3c1640ab2fb7d16d9b9a8d9c0e524e9cb0001 (commit)
      from  da5bcaa49916fd99c1cd2bfe11923e680056abd7 (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=b0a3c1640ab2fb7d16d9b9a8d9c0e524e9cb0001

commit b0a3c1640ab2fb7d16d9b9a8d9c0e524e9cb0001
Author: Andreas Schwab <schwab@suse.de>
Date:   Tue Mar 4 13:00:26 2014 +0100

    Properly handle forced elision in pthread_mutex_trylock (bug 16657)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                    |    8 ++++++++
 NEWS                                         |   10 +++++-----
 nptl/pthread_mutex_trylock.c                 |    9 ++++-----
 sysdeps/unix/sysv/linux/s390/force-elision.h |    5 -----
 sysdeps/unix/sysv/linux/x86/force-elision.h  |    5 -----
 5 files changed, 17 insertions(+), 20 deletions(-)
Comment 37 Andreas Schwab 2014-12-11 11:48:09 UTC
Fixed in 2.21.
Comment 38 Sourceware Commits 2015-02-06 15:33:43 UTC
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 annotated tag, glibc-2.21 has been created
        at  dee233133daf497cdb3a507a7da9d88414820a1f (tag)
   tagging  4e42b5b8f89f0e288e68be7ad70f9525aebc2cff (commit)
  replaces  glibc-2.20
 tagged by  Carlos O'Donell
        on  Fri Feb 6 01:42:58 2015 -0500

- Log -----------------------------------------------------------------
The GNU C Library
=================

The GNU C Library version 2.21 is now available.

The GNU C Library is used as *the* C library in the GNU system and
in GNU/Linux systems, as well as many other systems that use Linux
as the kernel.

The GNU C Library is primarily designed to be a portable
and high performance C library.  It follows all relevant
standards including ISO C11 and POSIX.1-2008.  It is also
internationalized and has one of the most complete
internationalization interfaces known.

The GNU C Library webpage is at http://www.gnu.org/software/libc/

Packages for the 2.21 release may be downloaded from:
        http://ftpmirror.gnu.org/libc/
        http://ftp.gnu.org/gnu/libc/

The mirror list is at http://www.gnu.org/order/ftp.html

NEWS for version 2.21
=====================

* The following bugs are resolved with this release:

  6652, 10672, 12674, 12847, 12926, 13862, 14132, 14138, 14171, 14498,
  15215, 15378, 15884, 16009, 16418, 16191, 16469, 16576, 16617, 16618,
  16619, 16657, 16740, 16857, 17192, 17266, 17273, 17344, 17363, 17370,
  17371, 17411, 17460, 17475, 17485, 17501, 17506, 17508, 17522, 17555,
  17570, 17571, 17572, 17573, 17574, 17582, 17583, 17584, 17585, 17589,
  17594, 17601, 17608, 17616, 17625, 17630, 17633, 17634, 17635, 17647,
  17653, 17657, 17658, 17664, 17665, 17668, 17682, 17702, 17717, 17719,
  17722, 17723, 17724, 17725, 17732, 17733, 17744, 17745, 17746, 17747,
  17748, 17775, 17777, 17780, 17781, 17782, 17791, 17793, 17796, 17797,
  17801, 17803, 17806, 17834, 17844, 17848, 17868, 17869, 17870, 17885,
  17892.

* CVE-2015-1472 Under certain conditions wscanf can allocate too little
  memory for the to-be-scanned arguments and overflow the allocated
  buffer.  The implementation now correctly computes the required buffer
  size when using malloc.

* A new semaphore algorithm has been implemented in generic C code for all
  machines. Previous custom assembly implementations of semaphore were
  difficult to reason about or ensure that they were safe. The new version
  of semaphore supports machines with 64-bit or 32-bit atomic operations.
  The new semaphore algorithm is used by sem_init, sem_open, sem_post,
  sem_wait, sem_timedwait, sem_trywait, and sem_getvalue.

* Port to Altera Nios II has been contributed by Mentor Graphics.

* Optimized strcpy, stpcpy, strncpy, stpncpy, strcmp, and strncmp
  implementations for powerpc64/powerpc64le.
  Implemented by Adhemerval Zanella (IBM).

* Added support for TSX lock elision of pthread mutexes on powerpc32, powerpc64
  and powerpc64le.  This may improve lock scaling of existing programs on
  HTM capable systems.  The lock elision code is only enabled with
  --enable-lock-elision=yes.  Also, the TSX lock elision implementation for
  powerpc will issue a transaction abort on every syscall to avoid side
  effects being visible outside transactions.

* Optimized strcpy, stpcpy, strchrnul and strrchr implementations for
  AArch64.  Contributed by ARM Ltd.

* i386 memcpy functions optimized with SSE2 unaligned load/store.

* CVE-2104-7817 The wordexp function could ignore the WRDE_NOCMD flag
  under certain input conditions resulting in the execution of a shell for
  command substitution when the applicaiton did not request it. The
  implementation now checks WRDE_NOCMD immediately before executing the
  shell and returns the error WRDE_CMDSUB as expected.

* CVE-2012-3406 printf-style functions could run into a stack overflow when
  processing format strings with a large number of format specifiers.

* CVE-2014-9402 The nss_dns implementation of getnetbyname could run into an
  infinite loop if the DNS response contained a PTR record of an unexpected
  format.

* The minimum GCC version that can be used to build this version of the GNU
  C Library is GCC 4.6.  Older GCC versions, and non-GNU compilers, can
  still be used to compile programs using the GNU C Library.

* The GNU C Library is now built with -Werror by default.  This can be
  disabled by configuring with --disable-werror.

* New locales: tu_IN, bh_IN, raj_IN, ce_RU.

* The obsolete sigvec function has been removed.  This was the original
  4.2BSD interface that inspired the POSIX.1 sigaction interface, which
  programs have been using instead for about 25 years.  Of course, ABI
  compatibility for old binaries using sigvec remains intact.

* Merged gettext 0.19.3 into the intl subdirectory.  This fixes building
  with newer versions of bison.

* Support for MIPS o32 FPXX, FP64A and FP64 ABI Extensions.
  The original MIPS o32 hard-float ABI requires an FPU where double-precision
  registers overlay two consecutive single-precision registers.  MIPS32R2
  introduced a new FPU mode (FR=1) where double-precision registers extend the
  corresponding single-precision registers which is incompatible with the
  o32 hard-float ABI.  The MIPS SIMD ASE and the MIPSR6 architecture both
  require the use of FR=1 making a transition necessary.  New o32 ABI
  extensions enable users to migrate over time from the original o32 ABI
  through to the updated o32 FP64 ABI.  To achieve this the dynamic linker now
  tracks the ABI of any loaded object and verifies that new objects are
  compatible.  Mode transitions will also be requested as required and
  unsupportable objects will be rejected.  The ABI checks include both soft and
  hard float ABIs for o32, n32 and n64.

  GCC 5 with GNU binutils 2.25 onwards:
  It is strongly recommended that all o32 system libraries are built using the
  new o32 FPXX ABI (-mfpxx) to facilitate the transition as this is compatible
  with the original and all new o32 ABI extensions.  Configure a MIPS GCC
  compiler using --with-fp-32=xx to set this by default.

Contributors
============

This release was made possible by the contributions of many people.
The maintainers are grateful to everyone who has contributed
changes or bug reports.  These include:

Adhemerval Zanella
Alan Hayward
Alexandre Oliva
Allan McRae
Anders Kaseorg
Andreas Krebbel
Andreas Schwab
Andrew Pinski
Andrew Senkevich
Anton Blanchard
Arjun Shankar
Aurelien Jarno
Bram
Brooks Moses
Carlos O'Donell
Chris Metcalf
Chung-Lin Tang
David Holsgrove
David S. Miller
Eric Biggers
Florian Weimer
Gratian Crisan
H.J. Lu
J. Brown
James Lemke
Jeff Law
Jose E. Marchesi
Joseph Myers
Kaz Kojima
Kostya Serebryany
Leonhard Holz
Ma Shimiao
Maciej W. Rozycki
Marcus Shawcroft
Marek Polacek
Martin Sebor
Matthew Fortune
Mike Frysinger
Ondřej Bílka
Paul Eggert
Paul Pluzhnikov
Petar Jovanovic
Pravin Satpute
Rajalakshmi Srinivasaraghavan
Rasmus Villemoes
Renlin Li
Richard Earnshaw
Richard Henderson
Roland McGrath
Ryan Cumming
Samuel Thibault
Siddhesh Poyarekar
Stefan Liebler
Steve Ellcey
Tatiana Udalova
Tim Lammens
Tom de Vries
Torvald Riegel
Vladimir A. Nazarenko
Wilco Dijkstra
Will Newton
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAABAgAGBQJU1GKVAAoJECXvCkNsKkr/4IYIAMfU5+NN2z44R2SeRlH+bSZG
rGCF7rUzUOY+ePVNdgOH2cUKfxuLyMU6aao/IVQ863VHW1Ct/x2goVU22oqnVmvP
FeElVxZyzx7iCqipqyaobj0Fm/b563/4yQ+BEOjH39Sj5Ii5kY6PcQQslMJWIH5R
/nHmO048ZAlx/vGWTczAR50HOW1z8H1gilWm8SBkq2BJ8UndhSXCVpThCdMGfeBF
NUxUl2aSt3eghA0SWD3WgRzRR0vU9RHuNQ5k5ggjjRPtipa8DP04t0Bk7/QiLhj1
M2upSS7r4ceZZuFGX8oYVn3f0lTajpOOeuX7SBnKIgQ8cDXtSHST6yPMAbsJRB4=
=odoa
-----END PGP SIGNATURE-----

Adhemerval Zanella (35):
      PowerPC: multiarch bzero cleanup for PPC64
      PowerPC: memset optimization for POWER8/PPC64
      powerpc: remove linux lowlevellock.h
      powerpc: Fix encoding of POWER8 instruction
      powerpc: Simplify encoding of POWER8 instruction
      libio: Refactor tst-fmemopen to use test-skeleton.c
      powerpc: Fix missing barriers in atomic_exchange_and_add_{acq,rel}
      powerpc: Add powerpc64 strspn optimization
      powerpc: Add powerpc64 strcspn optimization
      powerpc: Add powerpc64 strpbrk optimization
      libio: Fix buffer overrun in tst-ftell-active-handler
      libio: Fix variable aligment in tst-ftell-active-handler
      powerpc: Fix lgammal_r overflow warnings
      Fix __sendmmsg prototype guards
      stdio-common: Include <libc-internal.h> in some tests
      Function declaration cleanup
      mips: Fix __libc_pread prototype
      powerpc: Fix compiler warning on some syscalls
      powerpc: Add the lock elision using HTM
      powerpc: Add adaptive elision to rwlocks
      powerpc: abort transaction in syscalls
      powerpc: Fix Copyright dates and CL entry
      Add x86 32 bit vDSO time function support
      powerpc: Optimized st{r,p}cpy for POWER8/PPC64
      powerpc: Optimized strcat for POWER8/PPC64
      powerpc: Optimized strncat for POWER7/PPC64
      powerpc: Optimized st{r,p}ncpy for POWER8/PPC64
      powerpc: Optimized strcmp for POWER8/PPC64
      powerpc: Optimized strncmp for POWER8/PPC64
      powerpc: Fix POWER7/PPC64 performance regression on LE
      BZ #16418: Fix powerpc get_clockfreq raciness
      powerpc: Fix ifuncmain6pie failure with GCC 4.9
      powerpc: Fix powerpc64 build failure with binutils 2.22
      powerpc: Fix fsqrt build in libm [BZ#16576]
      powerpc: Fix fesetexceptflag [BZ#17885]

Alan Hayward (1):
      [AArch64] Add ipc.h.

Alexandre Oliva (6):
      Require check-safety.sh to pass; wish for check that all fns are documented
      manual: cuserid is mtasurace if not passed a string
      ctermid: return string literal, document MT-Safety pitfall
      BZ#14498: fix infinite loop in nss_db_getservbyname
      BZ#16469: don't drop trailing dot in res_nquerydomain(..., name, NULL, ...)
      BZ#16469: resolv: skip leading dot in domain to search

Allan McRae (5):
      Open development for 2.21
      Update Russian translation
      Update French translation
      stdio-common/Makefile: readd bug26 testcase
      Label CVE-2014-9402 in NEWS

Anders Kaseorg (2):
      manual: Remove incorrect claim that qsort() can be stabilized
      manual: Correct guarantee about pointers compared by qsort()

Andreas Krebbel (2):
      stdlib/longlong.h: Add __udiv_w_sdiv prototype.
      iconv: Suppress array out of bounds warning.

Andreas Schwab (20):
      Handle zero prefix length in getifaddrs (BZ #17371)
      Fix misdetected Slow_SSE4_2 cpu feature bit (bug 17501)
      Don't error out writing a multibyte character to an unbuffered stream (bug 17522)
      Remove unused include
      m68k: don't expect PLT reference to __tls_get_addr
      Don't touch user-controlled stdio locks in forked child (bug 12847)
      Update NEWS
      Remove duplication from gconv-modules
      Properly handle forced elision in pthread_mutex_trylock (bug 16657)
      Remove obsolete comment
      Constify string parameters
      Fix printf format error
      Fix changelog typo
      m68k: remove @PLTPC from _dl_init call
      Remove 17581 from NEWS
      m68k: force inlining bswap functions
      m68k: fix missing definition of __feraiseexcept
      m68k/coldfire: avoid warning about volatile register variables
      ia64: avoid set-but-not-used warning
      Include <signal.h> in sysdeps/nptl/allocrtsig.c

Andrew Pinski (1):
      AArch64: Reformat inline-asm in elf_machine_load_address

Andrew Senkevich (4):
      Update minimal required bunutils version to 2.22
      i386: memcpy functions with SSE2 unaligned load/store
      i386: Fix build by GCC 5.0
      Remove duplicated -frounding-math

Anton Blanchard (1):
      powerpc: Fix __arch_compare_and_exchange_bool_64_rel

Arjun Shankar (6):
      New test for ftime
      Write errors to stdout and not stderr in nptl/tst-setuid3.c
      Modify several tests to use test-skeleton.c
      Modify stdio-common/tst-fseek.c to use test-skeleton.c
      Modify stdlib/tst-bsearch.c to use test-skeleton.c
      Modify libio/tst-fopenloc.c to use test-skeleton.c

Aurelien Jarno (2):
      resolv: improve comments about nserv and nservall
      resolv: fix rotate option

Bram (1):
      Fix segmentation fault when LD_LIBRARY_PATH contains only non-existings paths

Brooks Moses (1):
      sysdeps/x86_64/start.S doesn't have a .size elf directive for _start.

Carlos O'Donell (22):
      HPPA: Transition to new non-addon NPTL.
      HPPA: Add c++-types.data.
      Correctly size profiling reloc table (bug 17411)
      hppa: Make __SIGRTMIN 32 (ABI break).
      elf/dl-load.c: Use __strdup.
      manual/llio.texi: Add Linux-specific comments for write().
      Run check-localpltk/textrel/execstack over ld.so.
      manual/llio.texi: Comment on write atomicity.
      CVE-2014-7817: wordexp fails to honour WRDE_NOCMD.
      Expand comments in elf/ldconfig.c (search_dir)
      Use ALIGN_UP in nptl/nptl-init.c
      Fix indenting in bits/ioctl-types.h.
      Update libc.pot:
      Regenerate INSTALL.
      Fix semaphore destruction (bug 12674).
      Fix recursive dlopen.
      tst-getpw: Rewrite.
      Update copyright year to 2015 for new files.
      hppa: Remove warnings and fix conformance errors.
      glibc 2.21 pre-release update.
      hppa: Sync with pthread.h.
      Update version.h and include/features.h for 2.21 release

Chris Metcalf (32):
      tile: remove linux lowlevellock.h
      tilegx: optimize string copy_byte() internal function
      tilegx: provide optimized strnlen, strstr, and strcasestr
      tile: add support for _SC_LEVEL*CACHE* sysconf() queries
      tile: optimize memcmp
      tile: make the prolog of clone() more conformant
      tile: add clock_gettime support via vDSO
      tile: fix copyright header blocks in just-committed files
      tile: add inhibit_loop_to_libcall to string functions
      math: increase timeout for math/atest-*.c
      iconvdata/tst-loading: bump up timeout to 10s
      tilegx: fix strstr to build and link better
      tile: provide localplt.data with __tls_get_addr optional
      tile: remove localplt.data and use generic one again.
      tile: separate ffsll from ffs
      Update NEWS and ChangeLog with two tile bug fixes.
      tilegx: remove implicit boolean conversion in strstr.
      Fix namespace conformance issue with Bessel functions.
      NEWS: mention bug fix for 17747.
      tilegx: enable wordsize-64 support for ieee745 dbl-64.
      tilegx32: avoid a a -Werror warning from unwinding
      tilegx: fix sysdep.h to avoid a redefinition warning
      linux/clock_settime: remove unnecessary vDSO definitions
      tile: add no-op fe*() routines for libc internal use
      posix/Makefile: use $(objpfx) for files in before-compile.
      tile: prefer inlines to macros in math_private.h.
      Fix a couple of -Wundef warnings.
      Fix some warnings in the absence of FP round/exception support
      lround: provide cast for wordsize-64 version if needed
      tile: check error properly for vDSO calls
      posix/regcomp: initialize union structure tag to avoid warning
      tilegx32: set __HAVE_64B_ATOMICS to 0

Chung-Lin Tang (4):
      Add Nios II definitions to elf/elf.h.
      Remove divide from _ELF_DYNAMIC_DO_RELOC in elf/dynamic-link.h.
      Commit nios2 port to master.
      Function name typo error in non-PIC case, fixed in this patch.

David Holsgrove (3):
      MicroBlaze: Fix integer-pointer conversion warning
      MicroBlaze: Fix volatile-register-var warning in READ_THREAD_POINTER
      MicroBlaze: Avoid pointer to integer conversion warning

David S. Miller (6):
      Fix sparc build.
      Fix array bounds warnings in elf_get_dyanmic_info() on sparc with gcc-4.6
      Fix soft-fp build warning on sparc about strict aliasing.
      Fix scanf15.c testsuite build on sparc.
      Fix sparc semaphore implementation after recent changes.
      Fix two bugs in sparc atomics.

Eric Biggers (1):
      setenv fix memory leak when setting large, duplicate string (BZ #17658)

Florian Weimer (6):
      Turn on -Werror=implicit-function-declaration
      malloc: additional unlink hardening for non-small bins [BZ #17344]
      Complete the removal of __gconv_translit_find
      Update NEWS for bug 17608
      Avoid infinite loop in nss_dns getnetbyname [BZ #17630]
      iconvdata/run-iconv-test.sh: Actually test iconv modules

Gratian Crisan (1):
      arm: Re-enable PI futex support for ARM kernels >= 3.14.3

H.J. Lu (27):
      Require autoconf 2.69
      Resize DTV if the current DTV isn't big enough
      Mention fix for PR 13862
      Replace 1L with (mp_limb_t) 1
      Compile s_llround.c with -Wno-error for x32 build
      Replace -Wno-error with -fno-builtin-lround
      Remove @PLT from "call _dl_init@PLT" in _dl_start_user
      Add hidden __tls_get_addr/___tls_get_addr alias
      Replace %ld with %jd and cast to intmax_t
      Replace %ld with %jd and cast to intmax_t
      Replace %ld with %jd and cast to intmax_t
      Replace %ld with %jd and cast to intmax_t
      Replace %ld/%lu with %jd/%ju and cast to intmax_t/uintmax_t
      Replace %ld with %jd and cast to intmax_t
      Replace %ld with %jd and cast to intmax_t
      Replace %ld with %jd and cast to intmax_t
      Replace %ld with %jd and cast to intmax_t
      Mention fix for BZ #17732
      Mention i386 memcpy with SSE2 unaligned load/store
      Don't check PI_STATIC_AND_HIDDEN in i386 dl-machine.h
      Define CLOCKS_PER_SEC type to the type clock_t
      Mention bug fix for BZ #17806
      Use uint64_t and (uint64_t) 1 for 64-bit int
      Also use uint64_t in __new_sem_wait_fast
      Treat model numbers 0x4a/0x4d as Silvermont
      Also treat model numbers 0x5a/0x5d as Silvermont
      Use AVX unaligned memcpy only if AVX2 is available

J. Brown (1):
      Recognize recent x86 CPUs in string.h

James Lemke (2):
      Fix for test "malloc_usable_size: expected 7 but got 11"
      Fix for test "malloc_usable_size: expected 7 but got 11"

Jeff Law (1):
      CVE-2012-3406: Stack overflow in vfprintf [BZ #16617]

Jose E. Marchesi (1):
      Fix sparc struct fpu definition.

Joseph Myers (141):
      Add new Linux 3.16 constants to netinet/udp.h.
      Move architecture-specific shlib-versions entries to sysdeps files.
      Move OS-specific shlib-versions entries to sysdeps files.
      Use %ifdef in sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions.
      Remove configuration name patterns from shlib-versions.
      Remove bitrotten --enable-oldest-abi (bug 6652).
      soft-fp: Correct _FP_TO_INT formatting.
      soft-fp: Fix comment formatting.
      Move some setrlimit definitions to syscalls.list (bug 14138).
      Clean up gnu/lib-names.h generation (bug 14171).
      Remove shlib-versions entries redundant with DEFAULT entries.
      Run tst-ld-sse-use.sh with bash.
      Move some *at definitions to syscalls.list (bug 14138).
      Move execve to syscalls.list (bug 14138).
      Move some chown / lchown / fchown definitions to syscalls.list (bug 14138).
      Support and use mixed compat/non-compat aliases in syscalls.list.
      Don't use INTUSE with __adjtimex (bug 14132).
      soft-fp: Remove FP_CLEAR_EXCEPTIONS.
      soft-fp: Make extensions of subnormals from XFmode to TFmode signal underflow if traps enabled.
      soft-fp: Refactor exception handling for comparisons.
      soft-fp: Fix _FP_TO_INT latent bug in overflow handling.
      soft-fp: Add FP_DENORM_ZERO.
      Remove stray *_internal aliases (bug 14132).
      Don't use INTDEF/INTUSE with __cxa_atexit (bug 14132).
      soft-fp: Support more precise "invalid" exceptions.
      soft-fp: Support rsigned == 2 in _FP_TO_INT.
      soft-fp: Use parentheses around macro arguments.
      Don't use INTVARDEF/INTUSE with __libc_enable_secure (bug 14132).
      Remove CANCEL-FCT-WAIVE and CANCEL-FILE-WAIVE.
      conformtest: clean up POSIX expections for sys/utsname.h, sys/wait.h.
      Move readv and writev definitions to syscalls.list (bug 14138).
      Don't use INTDEF with __ldexpf (bug 14132).
      Don't use INTDEF for powerpc32 compat symbols (bug 14132).
      Move some chown / lchown / fchown definitions to syscalls.list (bug 14138).
      Move get*id and getgroups definitions to syscalls.list (bug 14138).
      Move setfsgid/setfsuid definitions to syscalls.list (bug 14138).
      Don't use INTDEF/INTUSE in unwind-dw2-fde.c (bug 14132).
      Remove __libc_creat function name.
      Remove __libc_readv and __libc_writev function names.
      Move powerpc64 pread/pwrite definitions to syscalls.list (bug 14138).
      Add bug 15215 to NEWS; move bug 17344 to correct version's list in NEWS.
      Remove __libc_pselect alias.
      Update autoconf version requirement in install.texi.
      Make aclocal.m4 comment mention updating install.texi for autoconf version.
      Remove __libc_nanosleep function name.
      soft-fp: Add _FP_TO_INT_ROUND.
      Don't use INTDEF/INTUSE with _dl_argv (bug 14132).
      Don't use INTDEF/INTUSE with _dl_init (bug 14132).
      Don't use INTDEF/INTUSE with _dl_mcount (bug 14132).
      Remove INTDEF / INTUSE / INTVARDEF (bug 14132).
      Remove __libc_waitpid function name.
      Fix tzfile.c namespace (bug 17583).
      Fix __getcwd rewinddir namespace (bug 17584).
      Fix malloc_info namespace (bug 17570).
      Fix qsort_r namespace (bug 17571).
      Fix x86_64 rawmemchr namespace (bug 17572).
      Fix stpcpy / mempcpy namespace (bug 17573).
      Fix __printf_fp wmemset namespace (bug 17574).
      Fix __get_nprocs fgets_unlocked namespace (bug 17582).
      Fix locale memmem namespace (bug 17585).
      Fix localealias.c fgets_unlocked namespace (bug 17589).
      Add tests for namespace for static linking.
      Fix strtoll / strtoull namespace for 32-bit (bug 17594).
      Use prototype definition for __strtol.
      Fix build of C mempcpy and stpcpy.
      Require GCC 4.6 or later to build glibc.
      Only declare __sigpause in installed signal.h when necessary.
      Remove ARM __GNUC_PREREQ(4,4) conditionals.
      Remove x86_64 __GNUC_PREREQ (4, 6) conditional.
      Fix libm mpone, mptwo namespace (bug 17616).
      Fix perror fileno namespace (bug 17633).
      Fix warning in posix/bug-regex31.c.
      Fix warning in stdio-common/tst-printf-round.c.
      Fix warning in setjmp/jmpbug.c.
      Fix test-strchr.c warnings for wide string testing.
      Remove TEST_IFUNC, tests-ifunc and *-ifunc.c tests.
      Fix warnings in fwscanf / rewind tests.
      FIx ldbl-128ibm frexpl for 32-bit systems (bug 16619, bug 16740).
      Fix sysdeps/unix/sysv/linux/arm/libc-do-syscall.S warning.
      Fix nptl/tst-cancel-self-cancelstate.c warning.
      Fix sysdeps/mips/__longjmp.c warning.
      Avoid warnings for unused results in nscd/connections.c.
      Fix nss/tst-nss-test1.c format warning.
      Fix stdio-common/tst-fmemopen.c format warnings.
      Fix dlfcn/failtestmod.c warning.
      Fix libio/bug-ungetwc1.c warning.
      Avoid deprecated sigblock in misc/tst-pselect.c.
      Make linknamespace tests check only relevant libraries.
      Fix elf/tst-unique4lib.cc warning.
      Fix fgets_unlocked namespace issues (bug 17664).
      Remove excess declarations from unistd.h for XPG3/XPG4 (bug 17665).
      Fix warning in posix/tst-getopt_long1.c.
      Fix -Waddress warnings in nptl/tst-mutex1.c.
      Fix warning in nptl/tst-stack4.c.
      Fix getifaddrs, freeifaddrs namespace (bug 17668).
      Remove some linknamespace test XFAILs.
      Fix linknamespace getdate_err handling.
      Fix linknamespace h_errno handling.
      Fix pthreads getrlimit, gettimeofday namespace (bug 17682).
      Add macros for diagnostic control, use for scanf %a tests.
      Disable -Wdiv-by-zero for some tests in stdio-common/tst-unlockedio.c.
      Disable -Wdeprecated-declarations for register_printf_function calls in tst-printfsz.c.
      Use -Werror by default, add --disable-werror.
      Fix tst-ftell-active-handler.c warning.
      Fix strftime wcschr namespace (bug 17634).
      Fix MIPS sigaction build.
      Fix MIPS waitid build.
      Clean up localedata tests printf formats, don't use -Wno-format.
      Add more headers to include/ for conform tests.
      Move semaphore.h to sysdeps/pthread/.
      Remove some semaphore.h linknamespace XFAILs.
      Fix resolver if_* namespace (bug 17717).
      Fix x86_64 memrchr namespace (bug 17719).
      Fix resolver inet_* namespace (bug 17722).
      Fix profil_counter namespace (bug 17725).
      Fix resolver bind, getsockname namespace (bug 17733).
      Split __kernel_standard* functions (fixes bug 17724).
      Make __ASSUME_UTIMES hppa-specific.
      Fix libm feraiseexcept namespace (bug 17723).
      Clean up powerpc fegetround / __fegetround inlines.
      Fix libm fegetenv namespace (bug 17748).
      Update copyright dates with scripts/update-copyrights.
      Update copyright dates not handled by scripts/update-copyrights.
      Use single year in copyright notice in banner in ntpl/version.c.
      Fix MIPS bits/fcntl.h namespace (bug 17780).
      Fix MIPS sa_flags type (bug 17781).
      Fix MIPS TIOCSER_TEMT namespace (bug 17782).
      Fix libm fegetround namespace (bug 17748).
      Fix wordsize-64 posix_fadvise64, posix_fallocate64 namespace (bug 17777).
      Fix isblank / isascii / toascii namespace (bug 17635).
      Fix ARM posix_fadvise64 namespace (bug 17793).
      Fix MIPS n64 posix_fadvise namespace (bug 17796).
      Fix libm feholdexcept namespace (bug 17748).
      Fix libm fesetenv namespace (bug 17748).
      Fix libm fesetround namespace (bug 17748).
      Fix libm feupdateenv namespace (bug 17748).
      Fix ldbl-96 scalblnl for subnormal arguments (bug 17834).
      Fix ldbl-96 scalblnl underflowing results (bug 17803).
      Fix powerpc-nofpu fesetenv namespace (bug 17748).
      soft-fp: Use __label__ for all labels within macros.
      Disable 64-bit atomics for MIPS n32.

Kaz Kojima (1):
      * Fix SH specific compiler warnings which are for integer-pointer

Kostya Serebryany (3):
      remove nested function hack_digit
      remove nested functions from elf/dl-deps.c
      remove nested functions from elf/dl-load.c

Leonhard Holz (4):
      strcoll: improve performance by removing the cache (#15884)
      Fix tst-strcoll-overflow returning before timeout (BZ #17506)
      Speed up strcoll by inlining
      Fix memory handling in strxfrm_l [BZ #16009]

Ma Shimiao (1):
      manual: fix addmntent's MT-Safety race annotation

Maciej W. Rozycki (1):
      MIPS: Avoid a dangling `vfork@GLIBC_2.0' reference

Marcus Shawcroft (1):
      Fix ChangeLog formatting of previous commit.

Marek Polacek (1):
      Fix tst_wcscpy.c test.

Martin Sebor (1):
      Clarify math/README.libm-test. Add "How to read the test output."

Matthew Fortune (5):
      Add a hook to enable load-time inspection of program headers
      Add support for MIPS O32 FPXX and .MIPS.abiflags
      Fix MIPS variable PAGE_SIZE bug (16191)
      NEWS for MIPS ABIs
      MicroBlaze: Fix BZ17791 - Remove fixed page size macros and others

Mike Frysinger (1):
      arm: drop EABI check

Ondřej Bílka (8):
      Sync recvmmsg prototype with kernel usage.
      Fix typo in changelog.
      Return allocated array instead of unallocated.
      Simplify strncat.
      Clean up check_pf allocation pattern. addresses
      Add changelog
      Suppress warning in string/tester.c for gcc 4.9
      Revert "Suppress warning in string/tester.c for gcc 4.9"

Paul Eggert (1):
      fnmatch: work around GCC compiler warning bug with uninit var

Paul Pluzhnikov (1):
      CVE-2015-1472: wscanf allocates too little memory

Petar Jovanovic (1):
      mips: Do not use jal to reach __libc_start_main

Pravin Satpute (2):
      New locale ce_RU (BZ #17192)
      New locale raj_IN (#16857)

Rajalakshmi Srinivasaraghavan (3):
      powerpc: strtok{_r} optimization for powerpc64
      powerpc: POWER7 strcpy optimization for unaligned strings
      powerpc: Optimize POWER7 strcmp trailing checks

Rasmus Villemoes (1):
      Fix prototype of eventfd.

Renlin Li (1):
      [AArch64] End frame record chain correctly.

Richard Earnshaw (5):
      [AArch64] Add optimized strchrnul.
      [AArch64] Fix strchrnul clobbering v15
      * string/stpcpy.c (__stpcpy): Rewrite using strlen and memcpy.
      AArch64 optimized implementation of strrchr.
      AArch64: Optimized implementations of strcpy and stpcpy.

Richard Henderson (2):
      alpha: Fix soft-fp breakage
      Add -Wno-trampolines as needed

Roland McGrath (62):
      Move findidx nested functions to top-level.
      Don't use a nested function in rpmatch.
      Minor cleanup in ld-ctype.c
      Minor cleanup in locale.c
      Remove unnecessarily nested function in do_lookup_unique.
      BZ#17460: Fix buffer overrun in nscd --help.
      Remove sysdeps/arm/soft-fp directory.
      Fix NPTL build error when missing __NR_set_robust_list.
      NPTL: Conditionalize more uses of SIGCANCEL and SIGSETXID.
      NPTL: Conditionalize direct futex syscall uses.
      NPTL: Clean up THREAD_SYSINFO macros.
      Remove obsolete TLS_DEFINE_INIT_TP fallback.
      Make internal lock-init macros return void.
      NPTL: Add some missing #include's
      NPTL: Clean up gratuitous Linuxism in libpthread.so entry point.
      Tiny refactoring in fts to eliminate a warning.
      Avoid local PLT reference in __nptl_main.
      ARM: Use movw/movt more when available
      Rework some nscd code not to use variable-length struct types.
      Prototypify htonl and htons definitions.
      Rework compiler version check in configure.
      Clean up wchar_t conversion code in iconv program.
      Clean up internal ctype.h header.
      BZ#17496: Fix gnu/lib-names.h dependency.
      NPTL: Move __libc_multiple_threads_ptr defn to nptl-init.c
      Remove sigvec.
      NPTL: Refactor createthread.c
      NPTL: Move Linux-specific createthread.c to sysdeps.
      NPTL: Add stub createthread.c
      Test that pthread_create diagnoses invalid scheduling parameters.
      NPTL: Don't (re)validate sched_priority in pthread_create.
      NPTL: Refactor scheduler setup in pthread_create.
      NPTL: Conditionalize asynchronous cancellation support on [SIGCANCEL].
      NPTL: Use __libc_fatal in unwind.c.
      NPTL: Fix pthread_create regression from default-sched.h refactoring.
      De-warning a few stubs.
      Fix -Wformat-security warnings in posix/regexbug1.c
      Eliminate -Wno-format from printf/scanf tests.
      Suppress -Wformat-security in tst-error1.c.
      Refactor shm_{open,unlink} code to separate Linux-specific directory choice from POSIX-generic code.
      Fix NPTL build for !__ASSUME_SET_ROBUST_LIST case.
      NPTL: Add stubs for Linux-only extension functions.
      NPTL: Refactor named semaphore code to use shm-directory.h
      Use pragmas rather than makefiles for necessary options for unwind code.
      Revert "Use pragmas rather than makefiles for necessary options for unwind code."
      Use PTR_MANGLE on libgcc unwinder function pointers.
      Remove explicit inline on malloc perturb functions.
      Fix stub __if_freenameindex build error.
      NPTL: Remove gratuitous Linuxisms from gai_misc.h.
      NPTL: Move fork state variables to initializer files.
      ARM: Consolidate with generic unwinder wrapper code
      NPTL: Refactor cpu_set_t validation to be sysdeps-controlled
      Add stub sys/procfs.h file
      NPTL: Fixed missed conditionalization of setxid hooey.
      NPTL: Fix generic pthread_sigmask.
      Fix copyright year on new stub sys/procfs.h file.
      Clean up allocrtsig code.
      Some #include cleanup in aio/timer code.
      Fix shm-directory.h #include.
      Remove some references to bcopy/bcmp/bzero.
      Add missing libc_hidden_def to stub getrlimit64.
      Add missing libc_hidden_weak to stub if_nameindex, if_freenameindex.

Ryan Cumming (1):
      Define CLOCK_TAI on Linux (bug 17608)

Samuel Thibault (1):
      hurd: Fix dlopening libraries from static programs

Siddhesh Poyarekar (53):
      Return failure in getnetgrent only when all netgroups have been searched (#17363)
      Enhance tst-xmmymm.sh to detect zmm register usage in ld.so (BZ #16194)
      Fix typo in macro names in sysconf.c
      Add correct variable names for _POSIX_IPV6 and _POSIX_RAW_SOCKETS
      Remove _POSIX_REGEX_VERSION
      Revert to defining __extern_inline only for gcc-4.3+ (BZ #17266)
      Add NEWS entry for previous commit
      Fix memory leak in error path of do_ftell_wide (BZ #17370)
      Make __extern_always_inline usable on clang++ again
      Assume that all _[PS]C_* and _CS_* macros are always defined
      Include .interp section only for libc.so
      Remove CFLAGS for interp.c
      Fix infinite loop in check_pf (BZ #12926)
      Fix up incorrect formatting in last commit
      Fix stack alignment when loader is invoked directly
      Use GOT instead of GOT12 all over
      Add new macro IN_MODULE to identify module in which source is built
      Fix -Wundef warning in SHLIB_COMPAT
      Auto-generate libc-modules.h
      Use MODULE_NAME in stap-probe instead of IN_LIB
      Remove IN_LIB
      Define IN_MODULE for translation units that define NOT_IN_libc
      Remove IS_IN_libc
      Remove IS_IN_ldconfig
      Remove IS_IN_nscd
      Remove IS_IN_libdl
      Remove IS_IN_librt
      Remove IS_IN_libpthread
      Remove IS_IN_libm
      Remove IS_IN_rtld
      Remove last place for definition of IS_IN_* macros
      Remove NOT_IN_libc
      Use IS_IN internally only
      Don't use __warn_memset_zero_len for gcc-5.0 or newer
      Update NEWS for previous two commits
      ftell: seek to end only when there are unflushed bytes (BZ #17647)
      tst-ftell-active-handler: Open file with O_TRUNC for w modes
      Reset cached offset when reading to end of stream (BZ #17653)
      Fix up function definition style
      Fix date in ChangeLog
      Fix another typo in the ChangeLog
      Fix 'array subscript is above array bounds' warning in res_send.c
      Fix the 'array subscript is above array bounds' warning correctly
      Remove Wundef warnings for specification macros
      Add _POSIX namespace SYSCONF macros to posix-conf-vars.list
      Use posix-conf-vars.list to generate spec array
      Make type for spec variable size as size_t
      Use one-dimension arrays in gen-posix-conf-vars.awk
      Remove uses of sprintf in gen-posix-conf-vars.awk
      Fix typo in ChangeLog
      [s390] Define a __tls_get_addr macro to avoid declaring it again
      Initialize nscd stats data [BZ #17892]
      Fix up ChangeLog formatting

Stefan Liebler (13):
      S/390: Get rid of warning: the comparision will always evaluate as false.
      S/390: Get rid of warning unused variable in dl-machine.h.
      S/390: Add SystemTap probes to longjmp and setjmp.
      S/390: dl-machine.h: Use numbered labels in inline assembly.
      Add missing include of libc-internal.h.
      S/390: Get rid of assembler warning value truncated.
      Get rid of warning inlining failed in call to maybe_swap_uint32
      Get rid of warning comparision will always evaluate as true
      resolv: Suppress maybe uninitialized warning
      Get rid of format warning in tst-widetext.c.
      Get rid of format warning in bug-vfprintf-nargs.c.
      S390: Get rid of linknamespace failures for string functions.
      S390: Get rid of linknamespace failures for utmp functions.

Steve Ellcey (19):
      Modify ABI tests in MIPS preconfigure.
      Put mips preconfigure code inside mips* case statement.
      * sysdeps/mips/strcmp.S: New.
      Remove extra whitespace from end of line.
      2014-12-10  Steve Ellcey  <sellcey@imgtec.com>
      2014-12-11  Steve Ellcey  <sellcey@imgtec.com>
      * sysdeps/mips/dl-trampoline.c: Modify switch expression to have
      2014-12-17  Steve Ellcey  <sellcey@imgtec.com>
      2014-12-19  Steve Ellcey  <sellcey@imgtec.com>
      2014-12-19  Steve Ellcey  <sellcey@imgtec.com>
      Remove trailing white space.
      Add missing ChangeLog entries from Friday (Dec 19, 2014).
      Remove trailing whitespace.
      2014-12-22  Steve Ellcey  <sellcey@imgtec.com>
      Fix preprocessor indentation in sysdeps/mips/memcpy.S.
      2015-01-05  Steve Ellcey  <sellcey@imgtec.com>
      2015-01-05  Steve Ellcey  <sellcey@imgtec.com>
      2015-01-05  Steve Ellcey  <sellcey@imgtec.com>
      Merge branch 'master' of ssh://sourceware.org/git/glibc

Tatiana Udalova (1):
      New Bhilodi and Tulu locales (BZ #17475)

Tim Lammens (1):
      Fix memory leak in libio/wfileops.c do_ftell_wide [BZ #17370]

Tom de Vries (1):
      Fix crossreference to nonexistent node BSD Handler

Torvald Riegel (24):
      pthread_once: Clean up constants.
      pthread_once: Add fast path and remove x86 variants.
      Fix SPARC atomic_write_barrier.
      powerpc: Change atomic_write_barrier to have release semantics.
      Add arch-specific configuration for C11 atomics support.
      Add atomic operations similar to those provided by C11.
      Add tests for C11-like atomic operations.
      Use C11 atomics in pthread_once.
      microblaze: 64b atomic operations are not supported.
      Fix synchronization of TPP min/max priorities.
      Remove custom pthread_once implementation on sh.
      Remove custom pthread_once implementation on s390.
      Fix nptl/tst-mutex5.c: Do not skip tests if elision is enabled.
      Fix nptl/tst-sem4: always start with a fresh semaphore.
      Add comments for the generic lowlevellock implementation.
      Fix warning in elf/tst-unique4lib.cc.
      Fix warning in misc/tst-mntent2.c.
      Ignore warning in string/tester.c.
      sh: Remove custom lowlevellock, barrier, condvar, and rwlock implementations.
      Use generic lowlevellock-futex.h in x86_64 lowlevellock.h.
      i386: Move futex functions from lowlevellock.h to lowlevellock-futex.h.
      MicroBlaze: Remove custom pthread_once implementation on microblaze.
      MicroBlaze: Remove custom lowlevellock.h.
      Fix wake-up in sysdeps/nptl/fork.c.

Vladimir A. Nazarenko (1):
      Fix incorrect mount table entry parsing in __getmntent_r

Wilco Dijkstra (18):
      Remove spaces.
      Remove an unused include.
      Cleanup fesetexceptflag to use the same logic as the ARM version. No functional changes.
      Cleanup feclearexcept to use the same logic as the ARM version. No functional changes.
      Cleanup fedisableexcept to use the same logic as the ARM version. No functional changes.
      Cleanup feenableexcept to use the same logic as the ARM version. No functional changes.
      Call get_rounding_mode rather than duplicating functionality.
      Call libc_feholdexcept_aarch64 from math_private.h rather than duplicating functionality.
      Call libc_fetestexcept_aarch64 from math_private.h rather than duplicating functionality.
      This patch improves strcat performance by using strlen and strcpy. Strlen has a fast C
      This patch improves strncat performance by using strlen. Strlen has a fast C implementation, so
      Improve strcpy performance.
      Improve performance of strncpy.
      Fix typo.
      Call libc_fesetround_aarch64.
      Call libc_fetestexcept_aarch64.
      Optimize to reduce FPCR/FPSR accesses.
      Optimize to avoid an unnecessary FPCR read.

Will Newton (10):
      ARM: Don't define _SYS_AUXV_H in sysdep.h
      Allow cross-building of tests
      stdlib/tst-strtod-round.c: Fix build on ARM
      benchtests: Add malloc microbenchmark
      AArch64: Update relocations for ILP32
      AArch64: Use ELF macros rather than Elf64 throughout
      intl: Merge with gettext version 0.19.3
      Bump required version of texinfo to 4.7
      Require bison 2.7 or newer for regenerating intl/plural.y
      ARM: Remove configure check for binutils 2.21 for ARMv7

-----------------------------------------------------------------------
Comment 39 Florian Weimer 2015-02-18 14:44:56 UTC
(In reply to Florian Weimer from comment #14)
> (In reply to Rich Felker from comment #13)
> > Yes, see comment #5. But if you're asking about security flag, my impression
> > was that so far the security flag is only being used where the bug leads
> > directly to a security problem more serious than plain DoS.
> 
> I was asking about real-world application impact, e.g. "we discovered this
> bug because Apache httpd was crashing after processing a certain sequence of
> requests" (purely hypothetically speaking).  It's not always easy to draw
> the line between a reliability bug which manifests somewhat randomly, and a
> denial-of-service vulnerability which can be triggered with some
> non-negligible probability (which will approach 1 after a sufficient number
> of attempts).

No security impact has been reported, so I'm flagging this as security-.
Comment 40 Sourceware Commits 2015-08-28 20:43:17 UTC
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.19/master has been updated
       via  323e41a8d8168dac0338bf95c12a8de5b0dfc56e (commit)
      from  980a63b384df3086b2969b9f7e8dd2f016caa78c (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=323e41a8d8168dac0338bf95c12a8de5b0dfc56e

commit 323e41a8d8168dac0338bf95c12a8de5b0dfc56e
Author: Andreas Schwab <schwab@suse.de>
Date:   Tue Mar 4 13:00:26 2014 +0100

    Properly handle forced elision in pthread_mutex_trylock (bug 16657)
    
    (cherry picked from commit b0a3c1640ab2fb7d16d9b9a8d9c0e524e9cb0001)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                        |    8 ++++++++
 NEWS                                             |    4 ++--
 nptl/pthread_mutex_trylock.c                     |    9 ++++-----
 nptl/sysdeps/unix/sysv/linux/x86/force-elision.h |    5 -----
 4 files changed, 14 insertions(+), 12 deletions(-)