aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--nptl/allocatestack.c9
2 files changed, 13 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 5effbd7..9121cf6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-10-13 Peter Zelezny <peter.zelezny@dektech.com.au>
+
+ [BZ #22153]
+ * nptl/allocatestack.c (__nptl_setxid_error): Preserve error code
+ in coredumps.
+
2017-10-13 James Clarke <jrtc27@jrtc27.com>
* sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela):
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index 196371a..ad9add8 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -1105,8 +1105,13 @@ __nptl_setxid_error (struct xid_command *cmdp, int error)
if (olderror == error)
break;
if (olderror != -1)
- /* Mismatch between current and previous results. */
- abort ();
+ {
+ /* Mismatch between current and previous results. Save the
+ error value to memory so that is not clobbered by the
+ abort function and preserved in coredumps. */
+ volatile int xid_err __attribute__((unused)) = error;
+ abort ();
+ }
}
while (atomic_compare_and_exchange_bool_acq (&cmdp->error, error, -1));
}