Commit 9cc5c206 authored by Martin Schwidefsky's avatar Martin Schwidefsky

s390/dumpstack: fix address ranges for asynchronous and panic stack

git commit dc7ee00d "s390: lowcore stack pointer offsets"
introduced a regression in regard to show_stack(). The stack pointer
for the asynchronous and the panic stack in the lowcore now have an
additional offset applied to them. This offset needs to be taken into
account in the calculation for the low and high address for the stacks.
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 338679f7
...@@ -74,6 +74,8 @@ __show_trace(unsigned long sp, unsigned long low, unsigned long high) ...@@ -74,6 +74,8 @@ __show_trace(unsigned long sp, unsigned long low, unsigned long high)
static void show_trace(struct task_struct *task, unsigned long *stack) static void show_trace(struct task_struct *task, unsigned long *stack)
{ {
const unsigned long frame_size =
STACK_FRAME_OVERHEAD + sizeof(struct pt_regs);
register unsigned long __r15 asm ("15"); register unsigned long __r15 asm ("15");
unsigned long sp; unsigned long sp;
...@@ -82,11 +84,13 @@ static void show_trace(struct task_struct *task, unsigned long *stack) ...@@ -82,11 +84,13 @@ static void show_trace(struct task_struct *task, unsigned long *stack)
sp = task ? task->thread.ksp : __r15; sp = task ? task->thread.ksp : __r15;
printk("Call Trace:\n"); printk("Call Trace:\n");
#ifdef CONFIG_CHECK_STACK #ifdef CONFIG_CHECK_STACK
sp = __show_trace(sp, S390_lowcore.panic_stack - 4096, sp = __show_trace(sp,
S390_lowcore.panic_stack); S390_lowcore.panic_stack + frame_size - 4096,
S390_lowcore.panic_stack + frame_size);
#endif #endif
sp = __show_trace(sp, S390_lowcore.async_stack - ASYNC_SIZE, sp = __show_trace(sp,
S390_lowcore.async_stack); S390_lowcore.async_stack + frame_size - ASYNC_SIZE,
S390_lowcore.async_stack + frame_size);
if (task) if (task)
__show_trace(sp, (unsigned long) task_stack_page(task), __show_trace(sp, (unsigned long) task_stack_page(task),
(unsigned long) task_stack_page(task) + THREAD_SIZE); (unsigned long) task_stack_page(task) + THREAD_SIZE);
......
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