This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.25-735-g075385f


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  075385f98af239ff5807a5c6ed17fec51e048454 (commit)
      from  2759a2c1d8b950521ae76e62efe0114fd36b6e2d (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 -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=075385f98af239ff5807a5c6ed17fec51e048454

commit 075385f98af239ff5807a5c6ed17fec51e048454
Author: John David Anglin <danglin@gcc.gnu.org>
Date:   Sat Jul 15 12:40:13 2017 -0400

    Fix guard alignment in allocate_stack when stack grows up.

diff --git a/ChangeLog b/ChangeLog
index b6befe2..41c050e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2017-07-15  John David Anglin  <danglin@gcc.gnu.org>
 
+	* nptl/allocatestack.c (allocate_stack): Align old and new guard
+	addresses to page boundaries when the stack grows up.
+
 	* sysdeps/hppa/math-tests.h: New.
 
 2017-07-14  DJ Delorie  <dj@redhat.com>
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index ec7d42e..ce2e24a 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -697,8 +697,14 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
 			prot) != 0)
 	    goto mprot_error;
 #elif _STACK_GROWS_UP
-	  if (__mprotect ((char *) pd - pd->guardsize,
-			pd->guardsize - guardsize, prot) != 0)
+         char *new_guard = (char *)(((uintptr_t) pd - guardsize)
+                                    & ~pagesize_m1);
+         char *old_guard = (char *)(((uintptr_t) pd - pd->guardsize)
+                                    & ~pagesize_m1);
+         /* The guard size difference might be > 0, but once rounded
+            to the nearest page the size difference might be zero.  */
+         if (new_guard > old_guard
+             && mprotect (old_guard, new_guard - old_guard, prot) != 0)
 	    goto mprot_error;
 #endif
 

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

Summary of changes:
 ChangeLog            |    3 +++
 nptl/allocatestack.c |   10 ++++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]