aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/stacktrace.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/kernel/stacktrace.c')
-rw-r--r--arch/s390/kernel/stacktrace.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/arch/s390/kernel/stacktrace.c b/arch/s390/kernel/stacktrace.c
index 2e5c65a1863e..515ff9011dd7 100644
--- a/arch/s390/kernel/stacktrace.c
+++ b/arch/s390/kernel/stacktrace.c
@@ -59,7 +59,7 @@ static unsigned long save_context_stack(struct stack_trace *trace,
59 } 59 }
60} 60}
61 61
62void save_stack_trace(struct stack_trace *trace, struct task_struct *task) 62void save_stack_trace(struct stack_trace *trace)
63{ 63{
64 register unsigned long sp asm ("15"); 64 register unsigned long sp asm ("15");
65 unsigned long orig_sp, new_sp; 65 unsigned long orig_sp, new_sp;
@@ -69,20 +69,16 @@ void save_stack_trace(struct stack_trace *trace, struct task_struct *task)
69 new_sp = save_context_stack(trace, &trace->skip, orig_sp, 69 new_sp = save_context_stack(trace, &trace->skip, orig_sp,
70 S390_lowcore.panic_stack - PAGE_SIZE, 70 S390_lowcore.panic_stack - PAGE_SIZE,
71 S390_lowcore.panic_stack); 71 S390_lowcore.panic_stack);
72 if ((new_sp != orig_sp) && !trace->all_contexts) 72 if (new_sp != orig_sp)
73 return; 73 return;
74 new_sp = save_context_stack(trace, &trace->skip, new_sp, 74 new_sp = save_context_stack(trace, &trace->skip, new_sp,
75 S390_lowcore.async_stack - ASYNC_SIZE, 75 S390_lowcore.async_stack - ASYNC_SIZE,
76 S390_lowcore.async_stack); 76 S390_lowcore.async_stack);
77 if ((new_sp != orig_sp) && !trace->all_contexts) 77 if (new_sp != orig_sp)
78 return; 78 return;
79 if (task) 79
80 save_context_stack(trace, &trace->skip, new_sp, 80 save_context_stack(trace, &trace->skip, new_sp,
81 (unsigned long) task_stack_page(task), 81 S390_lowcore.thread_info,
82 (unsigned long) task_stack_page(task) + THREAD_SIZE); 82 S390_lowcore.thread_info + THREAD_SIZE);
83 else
84 save_context_stack(trace, &trace->skip, new_sp,
85 S390_lowcore.thread_info,
86 S390_lowcore.thread_info + THREAD_SIZE);
87 return; 83 return;
88} 84}