From e91d1e5b7bb9e89faa4d212b56a2f507561ffe69 Mon Sep 17 00:00:00 2001 From: Tomoki Shirasawa Date: Tue, 24 Feb 2015 17:20:52 +0900 Subject: [PATCH] stack of signal handler is not 16 byte align refs #429 --- arch/x86/kernel/syscall.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/x86/kernel/syscall.c b/arch/x86/kernel/syscall.c index 14e79418..d07305e9 100644 --- a/arch/x86/kernel/syscall.c +++ b/arch/x86/kernel/syscall.c @@ -495,6 +495,7 @@ do_signal(unsigned long rc, void *regs0, struct process *proc, struct sig_pendin usp = (unsigned long *)regs->rsp; } sigsp = ((struct sigsp *)usp) - 1; + sigsp = (struct sigsp *)((unsigned long)sigsp & 0xfffffffffffffff0UL); if(copy_to_user(proc, &sigsp->regs, regs, sizeof(struct x86_regs)) || copy_to_user(proc, &sigsp->sigrc, &rc, sizeof(long))){ kfree(pending);