diff options
Diffstat (limited to 'arch/arm64/kernel/stacktrace.c')
-rw-r--r-- | arch/arm64/kernel/stacktrace.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm64/kernel/stacktrace.c b/arch/arm64/kernel/stacktrace.c index 76809ccd309c..d5718a060672 100644 --- a/arch/arm64/kernel/stacktrace.c +++ b/arch/arm64/kernel/stacktrace.c | |||
@@ -59,6 +59,11 @@ int notrace unwind_frame(struct task_struct *tsk, struct stackframe *frame) | |||
59 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER | 59 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER |
60 | if (tsk->ret_stack && | 60 | if (tsk->ret_stack && |
61 | (frame->pc == (unsigned long)return_to_handler)) { | 61 | (frame->pc == (unsigned long)return_to_handler)) { |
62 | if (WARN_ON_ONCE(frame->graph == -1)) | ||
63 | return -EINVAL; | ||
64 | if (frame->graph < -1) | ||
65 | frame->graph += FTRACE_NOTRACE_DEPTH; | ||
66 | |||
62 | /* | 67 | /* |
63 | * This is a case where function graph tracer has | 68 | * This is a case where function graph tracer has |
64 | * modified a return address (LR) in a stack frame | 69 | * modified a return address (LR) in a stack frame |