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 #include +#include #include /* @@ -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)