On 10/10/26 9:27 PM, Karl Mehltretter wrote:
stack_trace_save() and return_address() depend on the first frame reported
by arch_stack_walk(), but no test checks their frame numbering.

Add a test that calls both through a chain of three noinline functions
and compares the symbol of the result with the function expected for
each skip count or level.

Require FRAME_POINTER because the stack-scanning walker cannot provide an
exact start frame.

Assisted-by: LLM
Signed-off-by: Karl Mehltretter <[email protected]>
---
  arch/riscv/kernel/tests/Kconfig.debug     |  12 ++
  arch/riscv/kernel/tests/Makefile          |   1 +
  arch/riscv/kernel/tests/stacktrace_test.c | 142 ++++++++++++++++++++++
  3 files changed, 155 insertions(+)

diff --git a/arch/riscv/kernel/tests/Kconfig.debug 
b/arch/riscv/kernel/tests/Kconfig.debug
index 40f8dafffa0a..eb79df5b2c5a 100644
--- a/arch/riscv/kernel/tests/Kconfig.debug
+++ b/arch/riscv/kernel/tests/Kconfig.debug
@@ -42,6 +42,18 @@ config RISCV_KPROBES_KUNIT
If unsure, say N. +config RISCV_STACKTRACE_KUNIT_TEST
+       bool "KUnit tests for RISC-V stack trace start frames"
+       depends on KUNIT && STACKTRACE && FRAME_POINTER && KALLSYMS

Hi, Karl

One small nit: the new RISCV_STACKTRACE_KUNIT_TEST entry does
not follow the KUNIT_ALL_TESTS pattern of the two existing entries
right next to it (RISCV_KPROBES_KUNIT, RISCV_MODULE_LINKING_KUNIT):

    config RISCV_STACKTRACE_KUNIT_TEST
            bool "KUnit tests for RISC-V stack trace start frames" if 
!KUNIT_ALL_TESTS
            default KUNIT_ALL_TESTS

Without "default KUNIT_ALL_TESTS" the suite is never enabled by
kunit.all_tests, and without the "if !KUNIT_ALL_TESTS" prompt guard
it shows up as a redundant prompt when KUNIT_ALL_TESTS is already
set.  This is not a blocker in any way, just a nice tweak for a
potential v2.

Please feel free to add

    Tested-by: Shuai Xue <[email protected]>

to both patches, and additionally on 1/2

    Reviewed-by: Shuai Xue <[email protected]>

Thanks!
Shuai

Reply via email to