X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Faltstack%2Faltstack.c;h=63512931f8955a7efe34b41f52df2696246701fd;hb=15966998bbeaea92e4e1b1c9f067a4142f51f680;hp=67f457bce3b90dd6cdf406b33e0ec4ffd8de0834;hpb=141e582ead507103a5f8860a3ec8c0f237d2690a;p=ccan diff --git a/ccan/altstack/altstack.c b/ccan/altstack/altstack.c index 67f457bc..63512931 100644 --- a/ccan/altstack/altstack.c +++ b/ccan/altstack/altstack.c @@ -92,7 +92,7 @@ int altstack(rlim_t max, void *(*fn)(void *), void *arg, void **out) undo++; if (setjmp(jmp) == 0) { - unsigned char sigstk[MINSIGSTKSZ]; + unsigned char sigstk[SIGSTKSZ]; stack_t ss = { .ss_sp = sigstk, .ss_size = sizeof(sigstk) }; struct sigaction sa = { .sa_handler = segvjmp, .sa_flags = SA_NODEFER|SA_RESETHAND|SA_ONSTACK }; @@ -108,9 +108,10 @@ int altstack(rlim_t max, void *(*fn)(void *), void *arg, void **out) "mov %1, %%rsp\n\t" "sub $8, %%rsp\n\t" "push %%r10" - : "=r" (rsp_save_[0]) : "0" (m + max) : "r10"); + : "=r" (rsp_save_[0]) : "0" (m + max) : "r10", "memory"); out_ = fn_(arg_); - asm volatile ("pop %rsp"); + asm volatile ("pop %%rsp" + : : : "memory"); ret = 0; if (out) *out = out_; }