about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2017-06-09 13:21:43 +0200
committerFlorian Weimer <fweimer@redhat.com>2017-06-09 13:21:43 +0200
commitb8d2e394a2900cef5bbbe0503f15960f64a943b1 (patch)
treef06ad146a222f9db21064a1e0df02151e9a2780e
parent34b6f41c14d09fe627c6a6224880d76d0959079e (diff)
downloadglibc-b8d2e394a2900cef5bbbe0503f15960f64a943b1.tar.gz
glibc-b8d2e394a2900cef5bbbe0503f15960f64a943b1.tar.xz
glibc-b8d2e394a2900cef5bbbe0503f15960f64a943b1.zip
fork: Remove bogus parent PID assertions [BZ #21386]
(cherry picked from commit 1d2bc2eae969543b89850e35e532f3144122d80a)
-rw-r--r--ChangeLog7
-rw-r--r--NEWS1
-rw-r--r--sysdeps/nptl/fork.c8
3 files changed, 8 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 290515a58e..d44aff0a36 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2017-05-12  Florian Weimer  <fweimer@redhat.com>
+
+	[BZ #21386]
+	* sysdeps/nptl/fork.c (__libc_fork): Remove assertions on the
+	parent PID.  The assertion in the child is incorrect with PID
+	namespaces.
+
 2017-03-15  Joseph Myers  <joseph@codesourcery.com>
 
 	* sysdeps/x86/fpu/test-math-vector-sincos.h (INIT_VEC_PTRS_LOOP):
diff --git a/NEWS b/NEWS
index fee1cf8ca8..d52872323d 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,7 @@ The following bugs are resolved with this release:
   [21109] Tunables broken on big-endian
   [21115] sunrpc: Use-after-free in error path in clntudp_call
   [21289] Fix symbol redirect for fts_set
+  [21386] Assertion in fork for distinct parent PID is incorrect
 
 Version 2.25
 
diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
index db6d721fce..4bb87e2331 100644
--- a/sysdeps/nptl/fork.c
+++ b/sysdeps/nptl/fork.c
@@ -131,10 +131,6 @@ __libc_fork (void)
       call_function_static_weak (__malloc_fork_lock_parent);
     }
 
-#ifndef NDEBUG
-  pid_t ppid = THREAD_GETMEM (THREAD_SELF, tid);
-#endif
-
 #ifdef ARCH_FORK
   pid = ARCH_FORK ();
 #else
@@ -147,8 +143,6 @@ __libc_fork (void)
     {
       struct pthread *self = THREAD_SELF;
 
-      assert (THREAD_GETMEM (self, tid) != ppid);
-
       /* See __pthread_once.  */
       if (__fork_generation_pointer != NULL)
 	*__fork_generation_pointer += __PTHREAD_ONCE_FORK_GEN_INCR;
@@ -230,8 +224,6 @@ __libc_fork (void)
     }
   else
     {
-      assert (THREAD_GETMEM (THREAD_SELF, tid) == ppid);
-
       /* Release acquired locks in the multi-threaded case.  */
       if (multiple_threads)
 	{