Hi Madhavan, > @@ -245,7 +271,36 @@ noinline notrace void arch_stack_walk(stack_trace_consume_fn consume_entry, > fp = thread_saved_fp(task); > pc = thread_saved_pc(task); > } > - unwind(consume_entry, cookie, task, fp, pc); > + unwind(consume_entry, cookie, task, fp, pc, false); > +} > + > +/* > + * arch_stack_walk_reliable() may not be used for livepatch until all of > + * the reliability checks are in place in unwind_consume(). However, > + * debug and test code can choose to use it even if all the checks are not > + * in place. > + */ I'm glad to see the long-awaited function :) Does the above comment mean that this comment will be removed by another patch series that about live patch enablement, instead of [PATCH 4/4]? It seems to take time... But I start thinking about test code. Thanks, Keiya > +noinline int notrace arch_stack_walk_reliable(stack_trace_consume_fn consume_fn, > + void *cookie, > + struct task_struct *task) > +{ > + unsigned long fp, pc; > + > + if (!task) > + task = current; > + > + if (task == current) { > + /* Skip arch_stack_walk_reliable() in the stack trace. */ > + fp = (unsigned long)__builtin_frame_address(1); > + pc = (unsigned long)__builtin_return_address(0); > + } else { > + /* Caller guarantees that the task is not running. */ > + fp = thread_saved_fp(task); > + pc = thread_saved_pc(task); > + } > + if (unwind(consume_fn, cookie, task, fp, pc, true)) > + return 0; > + return -EINVAL; > } > > #endif > -- > 2.25.1