mirror of https://github.com/OpenIPC/firmware.git
31 lines
872 B
Diff
31 lines
872 B
Diff
diff -drupN a/arch/arm64/kernel/stacktrace.c b/arch/arm64/kernel/stacktrace.c
|
|
--- a/arch/arm64/kernel/stacktrace.c 2018-08-06 17:23:04.000000000 +0300
|
|
+++ b/arch/arm64/kernel/stacktrace.c 2022-06-12 05:28:14.000000000 +0300
|
|
@@ -22,6 +22,7 @@
|
|
#include <linux/stacktrace.h>
|
|
|
|
#include <asm/irq.h>
|
|
+#include <asm/stack_pointer.h>
|
|
#include <asm/stacktrace.h>
|
|
|
|
/*
|
|
@@ -186,6 +187,9 @@ void save_stack_trace_tsk(struct task_st
|
|
struct stack_trace_data data;
|
|
struct stackframe frame;
|
|
|
|
+ if (!try_get_task_stack(tsk))
|
|
+ return;
|
|
+
|
|
data.trace = trace;
|
|
data.skip = trace->skip;
|
|
|
|
@@ -207,6 +211,8 @@ void save_stack_trace_tsk(struct task_st
|
|
walk_stackframe(tsk, &frame, save_trace, &data);
|
|
if (trace->nr_entries < trace->max_entries)
|
|
trace->entries[trace->nr_entries++] = ULONG_MAX;
|
|
+
|
|
+ put_task_stack(tsk);
|
|
}
|
|
|
|
void save_stack_trace(struct stack_trace *trace)
|