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@xxxxxxxxx> Suggested-by: James Hogan <james.hogan@xxxxxxxxxx> Signed-off-by: Matt Redfearn <matt.redfearn@xxxxxxxxxx> --- 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