Re: [PATCH 1/2] arm64: Implement arch_stack_walk_reliable
From: Josh Poimboeuf
Date: Tue Mar 18 2025 - 19:00:41 EST
On Tue, Mar 18, 2025 at 01:14:40PM -0700, Song Liu wrote:
> >
> > See for example all the error conditions in the x86 version of
> > arch_stack_walk_reliable() and in arch/x86/kernel/unwind_frame.c.
>
> I guess I missed this part:
>
> diff --git i/arch/arm64/kernel/stacktrace.c w/arch/arm64/kernel/stacktrace.c
> index 69d0567a0c38..3bb8e3ea4c4b 100644
> --- i/arch/arm64/kernel/stacktrace.c
> +++ w/arch/arm64/kernel/stacktrace.c
> @@ -268,6 +268,8 @@ kunwind_next(struct kunwind_state *state)
> case KUNWIND_SOURCE_TASK:
> case KUNWIND_SOURCE_REGS_PC:
> err = kunwind_next_frame_record(state);
> + if (err && err != -ENOENT)
> + state->common.unreliable = true;
> break;
> default:
> err = -EINVAL;
I still see some issues:
- do_kunwind() -> kunwind_recover_return_address() can fail
- do_kunwind() -> consume_state() can fail
- even in the -ENOENT case the unreliable bit has already been set
right before the call to kunwind_next_frame_record_meta().
--
Josh