Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -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)
{
	const unsigned long frame_size =
		STACK_FRAME_OVERHEAD + sizeof(struct pt_regs);
	register unsigned long __r15 asm ("15");
	unsigned long sp;

@@ -82,11 +84,13 @@ static void show_trace(struct task_struct *task, unsigned long *stack)
		sp = task ? task->thread.ksp : __r15;
	printk("Call Trace:\n");
#ifdef CONFIG_CHECK_STACK
	sp = __show_trace(sp, S390_lowcore.panic_stack - 4096,
			  S390_lowcore.panic_stack);
	sp = __show_trace(sp,
			  S390_lowcore.panic_stack + frame_size - 4096,
			  S390_lowcore.panic_stack + frame_size);
#endif
	sp = __show_trace(sp, S390_lowcore.async_stack - ASYNC_SIZE,
			  S390_lowcore.async_stack);
	sp = __show_trace(sp,
			  S390_lowcore.async_stack + frame_size - ASYNC_SIZE,
			  S390_lowcore.async_stack + frame_size);
	if (task)
		__show_trace(sp, (unsigned long) task_stack_page(task),
			     (unsigned long) task_stack_page(task) + THREAD_SIZE);