summaryrefslogtreecommitdiff
path: root/sysdeps/mach
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2014-05-23 20:45:32 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2014-05-23 20:45:32 +0200
commit0660704b3efd251fd737589d0edba13ffebde0c1 (patch)
treeeef0ea2d0a51f39607fedad76d53a333407f6fb2 /sysdeps/mach
parent19657e8b846a7426424f261c355bc54a68b3021b (diff)
Fix guardsize computation
* pthread/pt-create.c (__pthread_create_internal): Round guardsize up to page size. Fill `guardsize' field of thread structure. * sysdeps/mach/hurd/i386/pt-setup.c (stack_setup): Add guardsize to computation of the top of the stack.
Diffstat (limited to 'sysdeps/mach')
-rw-r--r--sysdeps/mach/hurd/i386/pt-setup.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sysdeps/mach/hurd/i386/pt-setup.c b/sysdeps/mach/hurd/i386/pt-setup.c
index c3abe91..4511463 100644
--- a/sysdeps/mach/hurd/i386/pt-setup.c
+++ b/sysdeps/mach/hurd/i386/pt-setup.c
@@ -46,7 +46,9 @@ stack_setup (struct __pthread *thread,
/* Calculate the top of the new stack. */
bottom = thread->stackaddr;
- top = (uintptr_t *) ((uintptr_t) bottom + thread->stacksize);
+ top = (uintptr_t *) ((uintptr_t) bottom + thread->stacksize
+ + ((thread->guardsize + __vm_page_size-1)
+ / __vm_page_size) * __vm_page_size);
if (start_routine)
{