aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPratyush Anand <panand@redhat.com>2016-01-29 00:20:28 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2016-02-10 03:25:22 -0500
commite0115875c04548255212ebd7dbd90bdbe1257f48 (patch)
tree8307d4f8acf99dce2cb7ed477fae77fa98dae449
parent66adce8f1f9f3bcd743a0e72c10aa850df8c5fa7 (diff)
s390/stacktrace: add save_stack_trace_regs()
Implement save_stack_trace_regs, so that a stack trace of a kprobe event can be obtained. Without this we see following warning: "save_stack_trace_regs() not implemented yet." when we execute: echo stacktrace > /sys/kernel/debug/tracing/trace_options echo "p kfree" >> /sys/kernel/debug/tracing/kprobe_events echo 1 > /sys/kernel/debug/tracing/events/kprobes/enable Reported-by: Chunyu Hu <chuhu@redhat.com> Signed-off-by: Pratyush Anand <panand@redhat.com> [heiko.carstens@de.ibm.com]: changed patch to use __save_stack_trace() Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Tested-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--arch/s390/kernel/stacktrace.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/s390/kernel/stacktrace.c b/arch/s390/kernel/stacktrace.c
index e0fec2d8ac40..8f64ebd63767 100644
--- a/arch/s390/kernel/stacktrace.c
+++ b/arch/s390/kernel/stacktrace.c
@@ -103,3 +103,14 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
103 trace->entries[trace->nr_entries++] = ULONG_MAX; 103 trace->entries[trace->nr_entries++] = ULONG_MAX;
104} 104}
105EXPORT_SYMBOL_GPL(save_stack_trace_tsk); 105EXPORT_SYMBOL_GPL(save_stack_trace_tsk);
106
107void save_stack_trace_regs(struct pt_regs *regs, struct stack_trace *trace)
108{
109 unsigned long sp;
110
111 sp = kernel_stack_pointer(regs);
112 __save_stack_trace(trace, sp);
113 if (trace->nr_entries < trace->max_entries)
114 trace->entries[trace->nr_entries++] = ULONG_MAX;
115}
116EXPORT_SYMBOL_GPL(save_stack_trace_regs);