diff --git a/linuxkm/linuxkm_wc_port.h b/linuxkm/linuxkm_wc_port.h index 51bc3f26a..4e6497597 100644 --- a/linuxkm/linuxkm_wc_port.h +++ b/linuxkm/linuxkm_wc_port.h @@ -1072,9 +1072,7 @@ #endif /* !WOLFCRYPT_ONLY && !NO_CERTS */ - #ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES typeof(dump_stack) *dump_stack; - #endif #ifdef CONFIG_ARM64 #ifndef CONFIG_ARCH_TEGRA @@ -1345,9 +1343,7 @@ #endif /* !WOLFCRYPT_ONLY && !NO_CERTS */ - #ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES #define dump_stack WC_PIE_INDIRECT_SYM(dump_stack) - #endif #undef preempt_count /* just in case -- not a macro on x86. */ #define preempt_count WC_PIE_INDIRECT_SYM(preempt_count) @@ -1729,4 +1725,13 @@ #error unexpected BITS_PER_LONG value. #endif +/* WC_DUMP_BACKTRACE_NONDEBUG is intended to dump a backtrace only if it hasn't + * already been dumped by the called function. + */ +#if defined(WOLFSSL_DEBUG_TRACE_ERROR_CODES) && defined(WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES) + #define WC_DUMP_BACKTRACE_NONDEBUG WC_DO_NOTHING +#else + #define WC_DUMP_BACKTRACE_NONDEBUG dump_stack() +#endif + #endif /* LINUXKM_WC_PORT_H */ diff --git a/linuxkm/module_hooks.c b/linuxkm/module_hooks.c index c92074b0a..54cb0a36e 100644 --- a/linuxkm/module_hooks.c +++ b/linuxkm/module_hooks.c @@ -297,8 +297,10 @@ void wc_linuxkm_relax_long_loop(void) { */ } #endif + return; } #endif + cpu_relax(); } #if defined(WC_LINUXKM_WOLFENTROPY_IN_GLUE_LAYER) @@ -1475,9 +1477,7 @@ static int set_up_wolfssl_linuxkm_pie_redirect_table(void) { #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ #endif /* !WOLFCRYPT_ONLY && !NO_CERTS */ -#ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES wolfssl_linuxkm_pie_redirect_table.dump_stack = dump_stack; -#endif wolfssl_linuxkm_pie_redirect_table.preempt_count = my_preempt_count; #ifndef _raw_spin_lock_irqsave