Messages in this thread Patch in this message | | | From | Matt Redfearn <> | Subject | [PATCH] MIPS: Fix minimum alignment requirement of IRQ stack | Date | Fri, 7 Jul 2017 15:57:12 +0100 |
| |
Commit db8466c581cc ("MIPS: IRQ Stack: Unwind IRQ stack onto task stack") erroneously set the initial stack pointer of the IRQ stack to a value with a 4 byte alignment. The MIPS32 ABI requires that the minimum stack alignment is 8 byte, and the MIPS64 ABIs(n32/n64) require 16 byte minimum alignment. Use the ALMASK stack pointer mask to align the stack as appropriate for the kernel build.
Fixes: db8466c581cc ("MIPS: IRQ Stack: Unwind IRQ stack onto task stack") Reported-by: Darius Ivanauskas <dasilt@yahoo.com> Suggested-by: James Hogan <james.hogan@imgtec.com> Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
---
arch/mips/include/asm/irq.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/mips/include/asm/irq.h b/arch/mips/include/asm/irq.h index ddd1c918103b..ac66a2de091a 100644 --- a/arch/mips/include/asm/irq.h +++ b/arch/mips/include/asm/irq.h @@ -9,6 +9,7 @@ #ifndef _ASM_IRQ_H #define _ASM_IRQ_H +#include <asm/asm.h> #include <linux/linkage.h> #include <linux/smp.h> #include <linux/irqdomain.h> @@ -17,8 +18,8 @@ #include <irq.h> -#define IRQ_STACK_SIZE THREAD_SIZE -#define IRQ_STACK_START (IRQ_STACK_SIZE - sizeof(unsigned long)) +#define IRQ_STACK_SIZE THREAD_SIZE +#define IRQ_STACK_START ((IRQ_STACK_SIZE - sizeof(unsigned long)) & ALMASK) extern void *irq_stack[NR_CPUS]; -- 2.7.4
| |