diff options
Diffstat (limited to 'arch/s390/kernel/dumpstack.c')
| -rw-r--r-- | arch/s390/kernel/dumpstack.c | 12 | 
1 files changed, 11 insertions, 1 deletions
| diff --git a/arch/s390/kernel/dumpstack.c b/arch/s390/kernel/dumpstack.c index 0dc4b258b98d..db1bc00229ca 100644 --- a/arch/s390/kernel/dumpstack.c +++ b/arch/s390/kernel/dumpstack.c @@ -79,6 +79,15 @@ static bool in_nodat_stack(unsigned long sp, struct stack_info *info)  	return in_stack(sp, info, STACK_TYPE_NODAT, top - THREAD_SIZE, top);  } +static bool in_mcck_stack(unsigned long sp, struct stack_info *info) +{ +	unsigned long frame_size, top; + +	frame_size = STACK_FRAME_OVERHEAD + sizeof(struct pt_regs); +	top = S390_lowcore.mcck_stack + frame_size; +	return in_stack(sp, info, STACK_TYPE_MCCK, top - THREAD_SIZE, top); +} +  static bool in_restart_stack(unsigned long sp, struct stack_info *info)  {  	unsigned long frame_size, top; @@ -108,7 +117,8 @@ int get_stack_info(unsigned long sp, struct task_struct *task,  	/* Check per-cpu stacks */  	if (!in_irq_stack(sp, info) &&  	    !in_nodat_stack(sp, info) && -	    !in_restart_stack(sp, info)) +	    !in_restart_stack(sp, info) && +	    !in_mcck_stack(sp, info))  		goto unknown;  recursion_check: |