diff options
Diffstat (limited to 'arch/parisc/kernel/irq.c')
| -rw-r--r-- | arch/parisc/kernel/irq.c | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c index ba5e1c7b1f17..5404e4086cb9 100644 --- a/arch/parisc/kernel/irq.c +++ b/arch/parisc/kernel/irq.c @@ -413,6 +413,10 @@ static inline void stack_overflow_check(struct pt_regs *regs)  	if (regs->sr[7])  		return; +	/* exit if already in panic */ +	if (sysctl_panic_on_stackoverflow < 0) +		return; +  	/* calculate kernel stack usage */  	stack_usage = sp - stack_start;  #ifdef CONFIG_IRQSTACKS @@ -454,8 +458,10 @@ check_kernel_stack:  #ifdef CONFIG_IRQSTACKS  panic_check:  #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"); +	}  #endif  }  | 
