Commit 5bc64bd2 authored by Helge Deller's avatar Helge Deller

parisc: Disable further stack checks when panic occurs during stack check

Before the irq handler detects a low stack and then panics the kernel, disable
further stack checks to avoid recursive panics.
Reported-by: default avatarJohn David Anglin <dave.anglin@bell.net>
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent a56e88ec
...@@ -413,6 +413,10 @@ static inline void stack_overflow_check(struct pt_regs *regs) ...@@ -413,6 +413,10 @@ static inline void stack_overflow_check(struct pt_regs *regs)
if (regs->sr[7]) if (regs->sr[7])
return; return;
/* exit if already in panic */
if (sysctl_panic_on_stackoverflow < 0)
return;
/* calculate kernel stack usage */ /* calculate kernel stack usage */
stack_usage = sp - stack_start; stack_usage = sp - stack_start;
#ifdef CONFIG_IRQSTACKS #ifdef CONFIG_IRQSTACKS
...@@ -454,8 +458,10 @@ static inline void stack_overflow_check(struct pt_regs *regs) ...@@ -454,8 +458,10 @@ static inline void stack_overflow_check(struct pt_regs *regs)
#ifdef CONFIG_IRQSTACKS #ifdef CONFIG_IRQSTACKS
panic_check: panic_check:
#endif #endif
if (sysctl_panic_on_stackoverflow) if (sysctl_panic_on_stackoverflow) {
sysctl_panic_on_stackoverflow = -1; /* disable further checks */
panic("low stack detected by irq handler - check messages\n"); panic("low stack detected by irq handler - check messages\n");
}
#endif #endif
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment