From 0c5f183849112970e4ce7f7af4df4d2267cda7e1 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Thu, 13 Mar 2014 22:45:38 +0100 Subject: [PATCH] Align stack on a 16 bytes boundary in raw_makecontext. A wrongly aligned stack may lead to segfaults. --- src/simix/smx_context_raw.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/simix/smx_context_raw.c b/src/simix/smx_context_raw.c index df733cda81..f380e90843 100644 --- a/src/simix/smx_context_raw.c +++ b/src/simix/smx_context_raw.c @@ -62,6 +62,7 @@ __asm__ ( #endif " mov %rdi,%rax\n" /* stack */ " add %rsi,%rax\n" /* size */ + " andq $-16, %rax\n" /* align stack */ " movq $0, -8(%rax)\n" /* @return for func */ " mov %rdx,-16(%rax)\n" /* func */ " mov %rcx,-24(%rax)\n" /* arg/rdi */ @@ -137,6 +138,7 @@ __asm__ ( #endif " movl 4(%esp),%eax\n" /* stack */ " addl 8(%esp),%eax\n" /* size */ + " andl $-16, %eax\n" /* align stack */ " movl 12(%esp),%ecx\n" /* func */ " movl 16(%esp),%edx\n" /* arg */ " movl %edx, -4(%eax)\n" -- 2.20.1