diff options
author | Pratyush Anand <panand@redhat.com> | 2016-01-29 00:20:28 -0500 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2016-02-10 03:25:22 -0500 |
commit | e0115875c04548255212ebd7dbd90bdbe1257f48 (patch) | |
tree | 8307d4f8acf99dce2cb7ed477fae77fa98dae449 | |
parent | 66adce8f1f9f3bcd743a0e72c10aa850df8c5fa7 (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.c | 11 |
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 | } |
105 | EXPORT_SYMBOL_GPL(save_stack_trace_tsk); | 105 | EXPORT_SYMBOL_GPL(save_stack_trace_tsk); |
106 | |||
107 | void 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 | } | ||
116 | EXPORT_SYMBOL_GPL(save_stack_trace_regs); | ||