| From 099bc4812f09155da77eeb960a983470249c9ce1 Mon Sep 17 00:00:00 2001 |
| From: Christophe Leroy <christophe.leroy@c-s.fr> |
| Date: Mon, 9 Dec 2019 06:19:08 +0000 |
| Subject: powerpc/irq: fix stack overflow verification |
| |
| From: Christophe Leroy <christophe.leroy@c-s.fr> |
| |
| commit 099bc4812f09155da77eeb960a983470249c9ce1 upstream. |
| |
| Before commit 0366a1c70b89 ("powerpc/irq: Run softirqs off the top of |
| the irq stack"), check_stack_overflow() was called by do_IRQ(), before |
| switching to the irq stack. |
| In that commit, do_IRQ() was renamed __do_irq(), and is now executing |
| on the irq stack, so check_stack_overflow() has just become almost |
| useless. |
| |
| Move check_stack_overflow() call in do_IRQ() to do the check while |
| still on the current stack. |
| |
| Fixes: 0366a1c70b89 ("powerpc/irq: Run softirqs off the top of the irq stack") |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> |
| Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> |
| Link: https://lore.kernel.org/r/e033aa8116ab12b7ca9a9c75189ad0741e3b9b5f.1575872340.git.christophe.leroy@c-s.fr |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/powerpc/kernel/irq.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/arch/powerpc/kernel/irq.c |
| +++ b/arch/powerpc/kernel/irq.c |
| @@ -485,8 +485,6 @@ void __do_irq(struct pt_regs *regs) |
| |
| trace_irq_entry(regs); |
| |
| - check_stack_overflow(); |
| - |
| /* |
| * Query the platform PIC for the interrupt & ack it. |
| * |
| @@ -518,6 +516,8 @@ void do_IRQ(struct pt_regs *regs) |
| irqtp = hardirq_ctx[raw_smp_processor_id()]; |
| sirqtp = softirq_ctx[raw_smp_processor_id()]; |
| |
| + check_stack_overflow(); |
| + |
| /* Already there ? */ |
| if (unlikely(curtp == irqtp || curtp == sirqtp)) { |
| __do_irq(regs); |