diff --git a/glibc-testsuite.changes b/glibc-testsuite.changes
index 8fad9b6..2ff2ee7 100644
--- a/glibc-testsuite.changes
+++ b/glibc-testsuite.changes
@@ -1,3 +1,25 @@
+-------------------------------------------------------------------
+Wed Jun 29 12:50:21 UTC 2016 - schwab@suse.de
+
+- strncat-avoid-array-bounds-warning.patch: Avoid array-bounds warning for
+ stncat on i586 (BZ #20260)
+- Update glibc.keyring
+- Unset MALLOC_CHECK_ during testsuite run
+
+-------------------------------------------------------------------
+Thu Jun 23 07:41:06 UTC 2016 - schwab@suse.de
+
+- nsswitch.conf: Add fallback to files for passwd and group to prepare for
+ libnsl removal.
+
+-------------------------------------------------------------------
+Wed Jun 22 09:08:02 UTC 2016 - schwab@suse.de
+
+- nis-initgroups-status.patch: Return proper status from
+ _nss_nis_initgroups_dyn (bsc#984269, BZ #20262)
+- robust-mutex-deadlock.patch: Fix generic __lll_robust_timedlock_wait to
+ check for timeout (bsc#985170, BZ #20263)
+
-------------------------------------------------------------------
Thu Jun 9 09:17:10 UTC 2016 - schwab@suse.de
diff --git a/glibc-testsuite.spec b/glibc-testsuite.spec
index b491508..fd0c742 100644
--- a/glibc-testsuite.spec
+++ b/glibc-testsuite.spec
@@ -120,7 +120,7 @@ Source: http://ftp.gnu.org/pub/gnu/glibc/glibc-%{version}.tar.xz
%if !%{build_snapshot}
Source1: http://ftp.gnu.org/pub/gnu/glibc/glibc-%{version}.tar.xz.sig
%endif
-Source2: glibc.keyring
+Source2: http://savannah.gnu.org/project/memberlist-gpgkeys.php?group=libc&download=1#/glibc.keyring
Source3: noversion.tar.bz2
Source4: manpages.tar.bz2
Source5: nsswitch.conf
@@ -310,6 +310,12 @@ Patch1055: 0056-Fix-strfmon_l-Use-specified-locale-for-number-format.patch
Patch1056: clntudp-call-alloca.patch
# PATCH-FIX-UPSTREAM Fix nscd assertion failure in gc (BZ #19755)
Patch1057: nscd-gc-crash.patch
+# PATCH-FIX-UPSTREAM Return proper status from _nss_nis_initgroups_dyn (BZ #20262)
+Patch1058: nis-initgroups-status.patch
+# PATCH-FIX-UPSTREAM Fix generic __lll_robust_timedlock_wait to check for timeout (BZ #20263)
+Patch1059: robust-mutex-deadlock.patch
+# PATCH-FIX-UPSTREAM Avoid array-bounds warning for strncat on i586 (BZ #20260)
+Patch1060: strncat-avoid-array-bounds-warning.patch
###
# Patches awaiting upstream approval
@@ -590,6 +596,9 @@ rm nscd/s-stamp
%patch1055 -p1
%patch1056 -p1
%patch1057 -p1
+%patch1058 -p1
+%patch1059 -p1
+%patch1060 -p1
%patch2000 -p1
%patch2001 -p1
@@ -857,6 +866,8 @@ popd
export SUSE_ASNEEDED=0
# Increase timeout
export TIMEOUTFACTOR=16
+# The testsuite does its own malloc checking
+unset MALLOC_CHECK_
make -C cc-base -k check || {
cd cc-base
o=$-
diff --git a/glibc-utils.changes b/glibc-utils.changes
index 8fad9b6..2ff2ee7 100644
--- a/glibc-utils.changes
+++ b/glibc-utils.changes
@@ -1,3 +1,25 @@
+-------------------------------------------------------------------
+Wed Jun 29 12:50:21 UTC 2016 - schwab@suse.de
+
+- strncat-avoid-array-bounds-warning.patch: Avoid array-bounds warning for
+ stncat on i586 (BZ #20260)
+- Update glibc.keyring
+- Unset MALLOC_CHECK_ during testsuite run
+
+-------------------------------------------------------------------
+Thu Jun 23 07:41:06 UTC 2016 - schwab@suse.de
+
+- nsswitch.conf: Add fallback to files for passwd and group to prepare for
+ libnsl removal.
+
+-------------------------------------------------------------------
+Wed Jun 22 09:08:02 UTC 2016 - schwab@suse.de
+
+- nis-initgroups-status.patch: Return proper status from
+ _nss_nis_initgroups_dyn (bsc#984269, BZ #20262)
+- robust-mutex-deadlock.patch: Fix generic __lll_robust_timedlock_wait to
+ check for timeout (bsc#985170, BZ #20263)
+
-------------------------------------------------------------------
Thu Jun 9 09:17:10 UTC 2016 - schwab@suse.de
diff --git a/glibc-utils.spec b/glibc-utils.spec
index bdfd810..1412c89 100644
--- a/glibc-utils.spec
+++ b/glibc-utils.spec
@@ -119,7 +119,7 @@ Source: http://ftp.gnu.org/pub/gnu/glibc/glibc-%{version}.tar.xz
%if !%{build_snapshot}
Source1: http://ftp.gnu.org/pub/gnu/glibc/glibc-%{version}.tar.xz.sig
%endif
-Source2: glibc.keyring
+Source2: http://savannah.gnu.org/project/memberlist-gpgkeys.php?group=libc&download=1#/glibc.keyring
Source3: noversion.tar.bz2
Source4: manpages.tar.bz2
Source5: nsswitch.conf
@@ -309,6 +309,12 @@ Patch1055: 0056-Fix-strfmon_l-Use-specified-locale-for-number-format.patch
Patch1056: clntudp-call-alloca.patch
# PATCH-FIX-UPSTREAM Fix nscd assertion failure in gc (BZ #19755)
Patch1057: nscd-gc-crash.patch
+# PATCH-FIX-UPSTREAM Return proper status from _nss_nis_initgroups_dyn (BZ #20262)
+Patch1058: nis-initgroups-status.patch
+# PATCH-FIX-UPSTREAM Fix generic __lll_robust_timedlock_wait to check for timeout (BZ #20263)
+Patch1059: robust-mutex-deadlock.patch
+# PATCH-FIX-UPSTREAM Avoid array-bounds warning for strncat on i586 (BZ #20260)
+Patch1060: strncat-avoid-array-bounds-warning.patch
###
# Patches awaiting upstream approval
@@ -590,6 +596,9 @@ rm nscd/s-stamp
%patch1055 -p1
%patch1056 -p1
%patch1057 -p1
+%patch1058 -p1
+%patch1059 -p1
+%patch1060 -p1
%patch2000 -p1
%patch2001 -p1
@@ -857,6 +866,8 @@ popd
export SUSE_ASNEEDED=0
# Increase timeout
export TIMEOUTFACTOR=16
+# The testsuite does its own malloc checking
+unset MALLOC_CHECK_
make -C cc-base -k check || {
cd cc-base
o=$-
diff --git a/glibc.changes b/glibc.changes
index 8fad9b6..2ff2ee7 100644
--- a/glibc.changes
+++ b/glibc.changes
@@ -1,3 +1,25 @@
+-------------------------------------------------------------------
+Wed Jun 29 12:50:21 UTC 2016 - schwab@suse.de
+
+- strncat-avoid-array-bounds-warning.patch: Avoid array-bounds warning for
+ stncat on i586 (BZ #20260)
+- Update glibc.keyring
+- Unset MALLOC_CHECK_ during testsuite run
+
+-------------------------------------------------------------------
+Thu Jun 23 07:41:06 UTC 2016 - schwab@suse.de
+
+- nsswitch.conf: Add fallback to files for passwd and group to prepare for
+ libnsl removal.
+
+-------------------------------------------------------------------
+Wed Jun 22 09:08:02 UTC 2016 - schwab@suse.de
+
+- nis-initgroups-status.patch: Return proper status from
+ _nss_nis_initgroups_dyn (bsc#984269, BZ #20262)
+- robust-mutex-deadlock.patch: Fix generic __lll_robust_timedlock_wait to
+ check for timeout (bsc#985170, BZ #20263)
+
-------------------------------------------------------------------
Thu Jun 9 09:17:10 UTC 2016 - schwab@suse.de
diff --git a/glibc.keyring b/glibc.keyring
index 4de855c..e070aa8 100644
Binary files a/glibc.keyring and b/glibc.keyring differ
diff --git a/glibc.spec b/glibc.spec
index f1e5cf0..b383069 100644
--- a/glibc.spec
+++ b/glibc.spec
@@ -120,7 +120,7 @@ Source: http://ftp.gnu.org/pub/gnu/glibc/glibc-%{version}.tar.xz
%if !%{build_snapshot}
Source1: http://ftp.gnu.org/pub/gnu/glibc/glibc-%{version}.tar.xz.sig
%endif
-Source2: glibc.keyring
+Source2: http://savannah.gnu.org/project/memberlist-gpgkeys.php?group=libc&download=1#/glibc.keyring
Source3: noversion.tar.bz2
Source4: manpages.tar.bz2
Source5: nsswitch.conf
@@ -310,6 +310,12 @@ Patch1055: 0056-Fix-strfmon_l-Use-specified-locale-for-number-format.patch
Patch1056: clntudp-call-alloca.patch
# PATCH-FIX-UPSTREAM Fix nscd assertion failure in gc (BZ #19755)
Patch1057: nscd-gc-crash.patch
+# PATCH-FIX-UPSTREAM Return proper status from _nss_nis_initgroups_dyn (BZ #20262)
+Patch1058: nis-initgroups-status.patch
+# PATCH-FIX-UPSTREAM Fix generic __lll_robust_timedlock_wait to check for timeout (BZ #20263)
+Patch1059: robust-mutex-deadlock.patch
+# PATCH-FIX-UPSTREAM Avoid array-bounds warning for strncat on i586 (BZ #20260)
+Patch1060: strncat-avoid-array-bounds-warning.patch
###
# Patches awaiting upstream approval
@@ -590,6 +596,9 @@ rm nscd/s-stamp
%patch1055 -p1
%patch1056 -p1
%patch1057 -p1
+%patch1058 -p1
+%patch1059 -p1
+%patch1060 -p1
%patch2000 -p1
%patch2001 -p1
@@ -857,6 +866,8 @@ popd
export SUSE_ASNEEDED=0
# Increase timeout
export TIMEOUTFACTOR=16
+# The testsuite does its own malloc checking
+unset MALLOC_CHECK_
make -C cc-base -k check || {
cd cc-base
o=$-
diff --git a/nis-initgroups-status.patch b/nis-initgroups-status.patch
new file mode 100644
index 0000000..786c4e6
--- /dev/null
+++ b/nis-initgroups-status.patch
@@ -0,0 +1,53 @@
+ [BZ #20262]
+ * nis/nss_nis/nis-initgroups.c (_nss_nis_initgroups_dyn): Return
+ NSS_STATUS_SUCCESS when done. Return NSS_STATUS_TRYAGAIN when out
+ of memory.
+
+Index: glibc-2.23/nis/nss_nis/nis-initgroups.c
+===================================================================
+--- glibc-2.23.orig/nis/nss_nis/nis-initgroups.c
++++ glibc-2.23/nis/nss_nis/nis-initgroups.c
+@@ -266,7 +266,7 @@ _nss_nis_initgroups_dyn (const char *use
+
+ tmpbuf = __alloca (buflen);
+
+- do
++ while (1)
+ {
+ while ((status =
+ internal_getgrent_r (&grpbuf, tmpbuf, buflen, errnop,
+@@ -275,8 +275,11 @@ _nss_nis_initgroups_dyn (const char *use
+ tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen);
+
+ if (status != NSS_STATUS_SUCCESS)
+- goto done;
+-
++ {
++ if (status == NSS_STATUS_NOTFOUND)
++ status = NSS_STATUS_SUCCESS;
++ goto done;
++ }
+
+ g = &grpbuf;
+ if (g->gr_gid != group)
+@@ -304,7 +307,11 @@ _nss_nis_initgroups_dyn (const char *use
+
+ newgroups = realloc (groups, newsize * sizeof (*groups));
+ if (newgroups == NULL)
+- goto done;
++ {
++ status = NSS_STATUS_TRYAGAIN;
++ *errnop = errno;
++ goto done;
++ }
+ *groupsp = groups = newgroups;
+ *size = newsize;
+ }
+@@ -316,7 +323,6 @@ _nss_nis_initgroups_dyn (const char *use
+ }
+ }
+ }
+- while (status == NSS_STATUS_SUCCESS);
+
+ done:
+ while (intern.start != NULL)
diff --git a/nsswitch.conf b/nsswitch.conf
index 9d628f0..fbd63fd 100644
--- a/nsswitch.conf
+++ b/nsswitch.conf
@@ -26,8 +26,8 @@
# shadow: files nis
# group: files nis
-passwd: compat
-group: compat
+passwd: compat [NOTFOUND=return] files
+group: compat [NOTFOUND=return] files
hosts: files dns
networks: files dns
diff --git a/robust-mutex-deadlock.patch b/robust-mutex-deadlock.patch
new file mode 100644
index 0000000..a7edfc2
--- /dev/null
+++ b/robust-mutex-deadlock.patch
@@ -0,0 +1,152 @@
+ [BZ #20263]
+ * nptl/lowlevelrobustlock.c (__lll_robust_timedlock_wait)
+ [__ASSUME_FUTEX_CLOCK_REALTIME]: Check for timeout from
+ lll_futex_timed_wait_bitset.
+ * nptl/tst-robust10.c: New test.
+ * nptl/Makefile (tests): Add tst-robust10.
+
+Index: glibc-2.23/nptl/Makefile
+===================================================================
+--- glibc-2.23.orig/nptl/Makefile
++++ glibc-2.23/nptl/Makefile
+@@ -288,7 +288,7 @@ tests = tst-typesizes \
+ tst-initializers1 $(addprefix tst-initializers1-,\
+ c89 gnu89 c99 gnu99 c11 gnu11) \
+ tst-bad-schedattr \
+- tst-thread_local1 tst-mutex-errorcheck
++ tst-thread_local1 tst-mutex-errorcheck tst-robust10
+ xtests = tst-setuid1 tst-setuid1-static tst-setuid2 \
+ tst-mutexpp1 tst-mutexpp6 tst-mutexpp10
+ test-srcs = tst-oddstacklimit
+Index: glibc-2.23/nptl/lowlevelrobustlock.c
+===================================================================
+--- glibc-2.23.orig/nptl/lowlevelrobustlock.c
++++ glibc-2.23/nptl/lowlevelrobustlock.c
+@@ -118,8 +118,10 @@ __lll_robust_timedlock_wait (int *futex,
+ || !defined lll_futex_timed_wait_bitset)
+ lll_futex_timed_wait (futex, newval, &rt, private);
+ #else
+- lll_futex_timed_wait_bitset (futex, newval, abstime,
+- FUTEX_CLOCK_REALTIME, private);
++ int err = lll_futex_timed_wait_bitset (futex, newval, abstime,
++ FUTEX_CLOCK_REALTIME, private);
++ if (err == -ETIMEDOUT)
++ return -err;
+ #endif
+
+ try:
+Index: glibc-2.23/nptl/tst-robust10.c
+===================================================================
+--- /dev/null
++++ glibc-2.23/nptl/tst-robust10.c
+@@ -0,0 +1,110 @@
++/* Test that pthread_mutex_timedlock properly times out.
++ Copyright (C) 2016 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
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, see
++ . */
++
++#include
++#include
++#include
++#include
++#include
++
++pthread_mutex_t mutex;
++
++static void *
++thr (void *arg)
++{
++ struct timespec abstime;
++ clock_gettime (CLOCK_REALTIME, &abstime);
++ abstime.tv_sec += 1;
++ int ret = pthread_mutex_timedlock (&mutex, &abstime);
++ if (ret == 0)
++ {
++ puts ("mutex_timedlock didn't fail");
++ exit (1);
++ }
++ if (ret != ETIMEDOUT)
++ {
++ printf ("mutex_timedlock failed: %s\n", strerror (ret));
++ exit (1);
++ }
++
++ return 0;
++}
++
++static int
++do_test (void)
++{
++ pthread_t pt;
++ pthread_mutexattr_t ma;
++
++ if (pthread_mutexattr_init (&ma) != 0)
++ {
++ puts ("mutexattr_init failed");
++ return 0;
++ }
++ if (pthread_mutexattr_setrobust_np (&ma, PTHREAD_MUTEX_ROBUST_NP) != 0)
++ {
++ puts ("mutexattr_setrobust failed");
++ return 1;
++ }
++ if (pthread_mutex_init (&mutex, &ma))
++ {
++ puts ("mutex_init failed");
++ return 1;
++ }
++
++ if (pthread_mutexattr_destroy (&ma))
++ {
++ puts ("mutexattr_destroy failed");
++ return 1;
++ }
++
++ if (pthread_mutex_lock (&mutex))
++ {
++ puts ("mutex_lock failed");
++ return 1;
++ }
++
++ if (pthread_create (&pt, NULL, thr, NULL))
++ {
++ puts ("pthread_create failed");
++ return 1;
++ }
++
++ if (pthread_join (pt, NULL))
++ {
++ puts ("pthread_join failed");
++ return 1;
++ }
++
++ if (pthread_mutex_unlock (&mutex))
++ {
++ puts ("mutex_unlock failed");
++ return 1;
++ }
++
++ if (pthread_mutex_destroy (&mutex))
++ {
++ puts ("mutex_destroy failed");
++ return 1;
++ }
++
++ return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
diff --git a/strncat-avoid-array-bounds-warning.patch b/strncat-avoid-array-bounds-warning.patch
new file mode 100644
index 0000000..f196c34
--- /dev/null
+++ b/strncat-avoid-array-bounds-warning.patch
@@ -0,0 +1,31 @@
+Subject: [PATCH] Avoid array-bounds warning for strncat on i586
+
+ [BZ #20260]
+ * sysdeps/x86/bits/string.h (__strncat_g) [!__i686__]: Compute the
+ address before the beginning of the string as an integer to avoid
+ array-bounds warning.
+
+diff --git a/sysdeps/x86/bits/string.h b/sysdeps/x86/bits/string.h
+index 8dfce05..805d33f 100644
+--- a/sysdeps/x86/bits/string.h
++++ b/sysdeps/x86/bits/string.h
+@@ -1089,7 +1089,6 @@ __strncat_g (char *__dest, const char __src[], size_t __n)
+ : "g" (__n), "0" (0), "1" (__tmp), "2" (__src), "3" (0xffffffff)
+ : "memory", "cc");
+ # else
+- --__tmp;
+ __asm__ __volatile__
+ ("1:\n\t"
+ "cmpb $0,1(%1)\n\t"
+@@ -1108,7 +1107,7 @@ __strncat_g (char *__dest, const char __src[], size_t __n)
+ "3:\n\t"
+ "movb $0,(%1)"
+ : "=&q" (__dummy), "=&r" (__tmp), "=&r" (__src), "=&r" (__n)
+- : "1" (__tmp), "2" (__src), "3" (__n)
++ : "1" ((unsigned long) __tmp - 1), "2" (__src), "3" (__n)
+ : "memory", "cc");
+ #endif
+ return __dest;
+--
+2.9.0
+