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)  #ifdef CONFIG_FUNCTION_GRAPH_TRACER  	if (tsk->ret_stack &&  			(frame->pc == (unsigned long)return_to_handler)) { +		if (WARN_ON_ONCE(frame->graph == -1)) +			return -EINVAL; +		if (frame->graph < -1) +			frame->graph += FTRACE_NOTRACE_DEPTH; +  		/*  		 * This is a case where function graph tracer has  		 * modified a return address (LR) in a stack frame |