From a7998a2b765721709158df4c38f044a038f8b549 Mon Sep 17 00:00:00 2001 From: Daniel Pouzzner Date: Tue, 20 Aug 2024 18:10:25 -0500 Subject: [PATCH] linuxkm: add support for WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES using dump_stack(). --- linuxkm/linuxkm_wc_port.h | 8 ++++++++ linuxkm/module_hooks.c | 4 ++++ wolfcrypt/src/logging.c | 9 +++++++++ 3 files changed, 21 insertions(+) diff --git a/linuxkm/linuxkm_wc_port.h b/linuxkm/linuxkm_wc_port.h index 189a26e348..68592582ad 100644 --- a/linuxkm/linuxkm_wc_port.h +++ b/linuxkm/linuxkm_wc_port.h @@ -632,6 +632,10 @@ #endif #endif + #ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES + typeof(dump_stack) *dump_stack; + #endif + const void *_last_slot; }; @@ -777,6 +781,10 @@ #endif #endif + #ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES + #define dump_stack (wolfssl_linuxkm_get_pie_redirect_table()->dump_stack) + #endif + #endif /* __PIE__ */ #endif /* USE_WOLFSSL_LINUXKM_PIE_REDIRECT_TABLE */ diff --git a/linuxkm/module_hooks.c b/linuxkm/module_hooks.c index f1bf46f8fb..adf3fbf64f 100644 --- a/linuxkm/module_hooks.c +++ b/linuxkm/module_hooks.c @@ -580,6 +580,10 @@ static int set_up_wolfssl_linuxkm_pie_redirect_table(void) { #endif #endif +#ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES + wolfssl_linuxkm_pie_redirect_table.dump_stack = dump_stack; +#endif + /* runtime assert that the table has no null slots after initialization. */ { unsigned long *i; diff --git a/wolfcrypt/src/logging.c b/wolfcrypt/src/logging.c index 9568f1c6a1..d548cd6149 100644 --- a/wolfcrypt/src/logging.c +++ b/wolfcrypt/src/logging.c @@ -1721,6 +1721,14 @@ void WOLFSSL_ERROR_MSG(const char* msg) #ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES +#ifdef WOLFSSL_LINUXKM + +void wc_backtrace_render(void) { + dump_stack(); +} + +#else /* !WOLFSSL_LINUXKM */ + #include #if BACKTRACE_SUPPORTED != 1 @@ -1848,5 +1856,6 @@ void wc_backtrace_render(void) { wc_UnLockMutex(&backtrace_mutex); } +#endif /* !WOLFSSL_LINUXKM */ #endif /* WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES */