Merge pull request #9025 from douzzer/20250721-wolfssl_linuxkm_pie_redirect_table-direct

20250721-wolfssl_linuxkm_pie_redirect_table-direct
This commit is contained in:
philljj
2025-07-22 18:08:11 -05:00
committed by GitHub
3 changed files with 106 additions and 74 deletions

View File

@@ -101,6 +101,8 @@ $(obj)/wolfcrypt/test/test.o: ccflags-y += -DNO_MAIN_DRIVER -DWOLFSSL_NO_OPTIONS
$(obj)/wolfcrypt/src/aes.o: ccflags-y = $(WOLFSSL_CFLAGS) $(WOLFSSL_CFLAGS_YES_VECTOR_INSNS) $(obj)/wolfcrypt/src/aes.o: ccflags-y = $(WOLFSSL_CFLAGS) $(WOLFSSL_CFLAGS_YES_VECTOR_INSNS)
ifeq "$(ENABLED_LINUXKM_PIE)" "yes" ifeq "$(ENABLED_LINUXKM_PIE)" "yes"
# note, we need -fno-stack-protector to avoid references to
# "__stack_chk_fail" from the wolfCrypt container.
PIE_FLAGS := -fPIE -fno-stack-protector -fno-toplevel-reorder PIE_FLAGS := -fPIE -fno-stack-protector -fno-toplevel-reorder
PIE_SUPPORT_FLAGS := -DUSE_WOLFSSL_LINUXKM_PIE_REDIRECT_TABLE PIE_SUPPORT_FLAGS := -DUSE_WOLFSSL_LINUXKM_PIE_REDIRECT_TABLE
ifeq "$(KERNEL_ARCH_X86)" "yes" ifeq "$(KERNEL_ARCH_X86)" "yes"
@@ -121,7 +123,8 @@ ifeq "$(ENABLED_LINUXKM_PIE)" "yes"
endif endif
$(WOLFCRYPT_PIE_FILES): ccflags-y += $(PIE_SUPPORT_FLAGS) $(PIE_FLAGS) $(WOLFCRYPT_PIE_FILES): ccflags-y += $(PIE_SUPPORT_FLAGS) $(PIE_FLAGS)
$(WOLFCRYPT_PIE_FILES): ccflags-remove-y += -pg $(WOLFCRYPT_PIE_FILES): ccflags-remove-y += -pg
# disabling retpoline generation leads to profuse warnings without this: # using inline retpolines leads to "unannotated intra-function call"
# warnings from objtool without this:
$(WOLFCRYPT_PIE_FILES): OBJECT_FILES_NON_STANDARD := y $(WOLFCRYPT_PIE_FILES): OBJECT_FILES_NON_STANDARD := y
$(obj)/linuxkm/module_hooks.o: ccflags-y += $(PIE_SUPPORT_FLAGS) $(obj)/linuxkm/module_hooks.o: ccflags-y += $(PIE_SUPPORT_FLAGS)
endif endif

View File

@@ -867,136 +867,165 @@
}; };
extern const struct wolfssl_linuxkm_pie_redirect_table *wolfssl_linuxkm_get_pie_redirect_table(void); extern const struct wolfssl_linuxkm_pie_redirect_table *wolfssl_linuxkm_get_pie_redirect_table(void);
extern struct wolfssl_linuxkm_pie_redirect_table wolfssl_linuxkm_pie_redirect_table;
#if defined(WC_LKM_INDIRECT_SYM)
/* keep user-supplied override definition. */
#elif defined(WC_LKM_INDIRECT_SYM_BY_FUNC_ONLY) || \
defined(WC_LKM_INDIRECT_SYM_BY_DIRECT_TABLE_READ)
/* keep user-supplied override method. */
#elif defined(CONFIG_X86)
#define WC_LKM_INDIRECT_SYM_BY_DIRECT_TABLE_READ
#elif defined(CONFIG_ARM64)
/* direct access to wolfssl_linuxkm_pie_redirect_table.x on aarch64
* produces GOT relocations, e.g. R_AARCH64_LD64_GOT_LO12_NC.
*/
#define WC_LKM_INDIRECT_SYM_BY_FUNC_ONLY
#else
/* for other archs, by default use the safe way. */
#define WC_LKM_INDIRECT_SYM_BY_FUNC_ONLY
#endif
#if defined(WC_LKM_INDIRECT_SYM)
/* keep user-supplied override definition. */
#elif defined(WC_LKM_INDIRECT_SYM_BY_FUNC_ONLY)
#define WC_LKM_INDIRECT_SYM(x) (wolfssl_linuxkm_get_pie_redirect_table()->x)
#elif defined(WC_LKM_INDIRECT_SYM_BY_DIRECT_TABLE_READ)
#define WC_LKM_INDIRECT_SYM(x) (wolfssl_linuxkm_pie_redirect_table.x)
#else
#error no WC_LKM_INDIRECT_SYM method defined.
#endif
#ifdef __PIE__ #ifdef __PIE__
#ifndef __ARCH_MEMCMP_NO_REDIRECT #ifndef __ARCH_MEMCMP_NO_REDIRECT
#define memcmp (wolfssl_linuxkm_get_pie_redirect_table()->memcmp) #define memcmp WC_LKM_INDIRECT_SYM(memcmp)
#endif #endif
#ifndef __ARCH_MEMCPY_NO_REDIRECT #ifndef __ARCH_MEMCPY_NO_REDIRECT
#define memcpy (wolfssl_linuxkm_get_pie_redirect_table()->memcpy) #define memcpy WC_LKM_INDIRECT_SYM(memcpy)
#endif #endif
#ifndef __ARCH_MEMSET_NO_REDIRECT #ifndef __ARCH_MEMSET_NO_REDIRECT
#define memset (wolfssl_linuxkm_get_pie_redirect_table()->memset) #define memset WC_LKM_INDIRECT_SYM(memset)
#endif #endif
#ifndef __ARCH_MEMMOVE_NO_REDIRECT #ifndef __ARCH_MEMMOVE_NO_REDIRECT
#define memmove (wolfssl_linuxkm_get_pie_redirect_table()->memmove) #define memmove WC_LKM_INDIRECT_SYM(memmove)
#endif #endif
#ifndef __ARCH_STRCMP_NO_REDIRECT #ifndef __ARCH_STRCMP_NO_REDIRECT
#define strcmp (wolfssl_linuxkm_get_pie_redirect_table()->strcmp) #define strcmp WC_LKM_INDIRECT_SYM(strcmp)
#endif #endif
#ifndef __ARCH_STRNCMP_NO_REDIRECT #ifndef __ARCH_STRNCMP_NO_REDIRECT
#define strncmp (wolfssl_linuxkm_get_pie_redirect_table()->strncmp) #define strncmp WC_LKM_INDIRECT_SYM(strncmp)
#endif #endif
#ifndef __ARCH_STRCASECMP_NO_REDIRECT #ifndef __ARCH_STRCASECMP_NO_REDIRECT
#define strcasecmp (wolfssl_linuxkm_get_pie_redirect_table()->strcasecmp) #define strcasecmp WC_LKM_INDIRECT_SYM(strcasecmp)
#endif #endif
#ifndef __ARCH_STRNCASECMP_NO_REDIRECT #ifndef __ARCH_STRNCASECMP_NO_REDIRECT
#define strncasecmp (wolfssl_linuxkm_get_pie_redirect_table()->strncasecmp) #define strncasecmp WC_LKM_INDIRECT_SYM(strncasecmp)
#endif #endif
#ifndef __ARCH_STRLEN_NO_REDIRECT #ifndef __ARCH_STRLEN_NO_REDIRECT
#define strlen (wolfssl_linuxkm_get_pie_redirect_table()->strlen) #define strlen WC_LKM_INDIRECT_SYM(strlen)
#endif #endif
#ifndef __ARCH_STRSTR_NO_REDIRECT #ifndef __ARCH_STRSTR_NO_REDIRECT
#define strstr (wolfssl_linuxkm_get_pie_redirect_table()->strstr) #define strstr WC_LKM_INDIRECT_SYM(strstr)
#endif #endif
#ifndef __ARCH_STRNCPY_NO_REDIRECT #ifndef __ARCH_STRNCPY_NO_REDIRECT
#define strncpy (wolfssl_linuxkm_get_pie_redirect_table()->strncpy) #define strncpy WC_LKM_INDIRECT_SYM(strncpy)
#endif #endif
#ifndef __ARCH_STRNCAT_NO_REDIRECT #ifndef __ARCH_STRNCAT_NO_REDIRECT
#define strncat (wolfssl_linuxkm_get_pie_redirect_table()->strncat) #define strncat WC_LKM_INDIRECT_SYM(strncat)
#endif #endif
#define kstrtoll (wolfssl_linuxkm_get_pie_redirect_table()->kstrtoll) #define kstrtoll WC_LKM_INDIRECT_SYM(kstrtoll)
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)) || \ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)) || \
(defined(RHEL_MAJOR) && \ (defined(RHEL_MAJOR) && \
((RHEL_MAJOR > 9) || ((RHEL_MAJOR == 9) && (RHEL_MINOR >= 5)))) ((RHEL_MAJOR > 9) || ((RHEL_MAJOR == 9) && (RHEL_MINOR >= 5))))
#define _printk (wolfssl_linuxkm_get_pie_redirect_table()->_printk) #define _printk WC_LKM_INDIRECT_SYM(_printk)
#else #else
#define printk (wolfssl_linuxkm_get_pie_redirect_table()->printk) #define printk WC_LKM_INDIRECT_SYM(printk)
#endif #endif
#ifdef CONFIG_FORTIFY_SOURCE #ifdef CONFIG_FORTIFY_SOURCE
#define __warn_printk (wolfssl_linuxkm_get_pie_redirect_table()->__warn_printk) #define __warn_printk WC_LKM_INDIRECT_SYM(__warn_printk)
#endif #endif
#define snprintf (wolfssl_linuxkm_get_pie_redirect_table()->snprintf) #define snprintf WC_LKM_INDIRECT_SYM(snprintf)
#define _ctype (wolfssl_linuxkm_get_pie_redirect_table()->_ctype) #define _ctype WC_LKM_INDIRECT_SYM(_ctype)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 11, 0) #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 11, 0)
/* see include/linux/alloc_tag.h and include/linux/slab.h */ /* see include/linux/alloc_tag.h and include/linux/slab.h */
#define kmalloc_noprof (wolfssl_linuxkm_get_pie_redirect_table()->kmalloc_noprof) #define kmalloc_noprof WC_LKM_INDIRECT_SYM(kmalloc_noprof)
#define krealloc_noprof (wolfssl_linuxkm_get_pie_redirect_table()->krealloc_noprof) #define krealloc_noprof WC_LKM_INDIRECT_SYM(krealloc_noprof)
#define kzalloc_noprof (wolfssl_linuxkm_get_pie_redirect_table()->kzalloc_noprof) #define kzalloc_noprof WC_LKM_INDIRECT_SYM(kzalloc_noprof)
#define __kvmalloc_node_noprof (wolfssl_linuxkm_get_pie_redirect_table()->__kvmalloc_node_noprof) #define __kvmalloc_node_noprof WC_LKM_INDIRECT_SYM(__kvmalloc_node_noprof)
#define __kmalloc_cache_noprof (wolfssl_linuxkm_get_pie_redirect_table()->__kmalloc_cache_noprof) #define __kmalloc_cache_noprof WC_LKM_INDIRECT_SYM(__kmalloc_cache_noprof)
#define kvrealloc_noprof (wolfssl_linuxkm_get_pie_redirect_table()->kvrealloc_noprof) #define kvrealloc_noprof WC_LKM_INDIRECT_SYM(kvrealloc_noprof)
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(6, 10, 0) #elif LINUX_VERSION_CODE >= KERNEL_VERSION(6, 10, 0)
/* see include/linux/alloc_tag.h and include/linux/slab.h */ /* see include/linux/alloc_tag.h and include/linux/slab.h */
#define kmalloc_noprof (wolfssl_linuxkm_get_pie_redirect_table()->kmalloc_noprof) #define kmalloc_noprof WC_LKM_INDIRECT_SYM(kmalloc_noprof)
#define krealloc_noprof (wolfssl_linuxkm_get_pie_redirect_table()->krealloc_noprof) #define krealloc_noprof WC_LKM_INDIRECT_SYM(krealloc_noprof)
#define kzalloc_noprof (wolfssl_linuxkm_get_pie_redirect_table()->kzalloc_noprof) #define kzalloc_noprof WC_LKM_INDIRECT_SYM(kzalloc_noprof)
#define kvmalloc_node_noprof (wolfssl_linuxkm_get_pie_redirect_table()->kvmalloc_node_noprof) #define kvmalloc_node_noprof WC_LKM_INDIRECT_SYM(kvmalloc_node_noprof)
#define kmalloc_trace_noprof (wolfssl_linuxkm_get_pie_redirect_table()->kmalloc_trace_noprof) #define kmalloc_trace_noprof WC_LKM_INDIRECT_SYM(kmalloc_trace_noprof)
#define kvrealloc_noprof (wolfssl_linuxkm_get_pie_redirect_table()->kvrealloc_noprof) #define kvrealloc_noprof WC_LKM_INDIRECT_SYM(kvrealloc_noprof)
#else /* <6.10.0 */ #else /* <6.10.0 */
#define kmalloc (wolfssl_linuxkm_get_pie_redirect_table()->kmalloc) #define kmalloc WC_LKM_INDIRECT_SYM(kmalloc)
#define krealloc (wolfssl_linuxkm_get_pie_redirect_table()->krealloc) #define krealloc WC_LKM_INDIRECT_SYM(krealloc)
#define kzalloc(size, flags) kmalloc(size, (flags) | __GFP_ZERO) #define kzalloc(size, flags) kmalloc(size, (flags) | __GFP_ZERO)
#ifdef HAVE_KVMALLOC #ifdef HAVE_KVMALLOC
#define kvmalloc_node (wolfssl_linuxkm_get_pie_redirect_table()->kvmalloc_node) #define kvmalloc_node WC_LKM_INDIRECT_SYM(kvmalloc_node)
#endif #endif
#ifdef HAVE_KVREALLOC #ifdef HAVE_KVREALLOC
#define kvrealloc (wolfssl_linuxkm_get_pie_redirect_table()->kvrealloc) #define kvrealloc WC_LKM_INDIRECT_SYM(kvrealloc)
#endif #endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0) || \ #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0) || \
(defined(RHEL_MAJOR) && \ (defined(RHEL_MAJOR) && \
((RHEL_MAJOR > 9) || ((RHEL_MAJOR == 9) && (RHEL_MINOR >= 5)))) ((RHEL_MAJOR > 9) || ((RHEL_MAJOR == 9) && (RHEL_MINOR >= 5))))
#define kmalloc_trace (wolfssl_linuxkm_get_pie_redirect_table()->kmalloc_trace) #define kmalloc_trace WC_LKM_INDIRECT_SYM(kmalloc_trace)
#else #else
#define kmem_cache_alloc_trace (wolfssl_linuxkm_get_pie_redirect_table()->kmem_cache_alloc_trace) #define kmem_cache_alloc_trace WC_LKM_INDIRECT_SYM(kmem_cache_alloc_trace)
#define kmalloc_order_trace (wolfssl_linuxkm_get_pie_redirect_table()->kmalloc_order_trace) #define kmalloc_order_trace WC_LKM_INDIRECT_SYM(kmalloc_order_trace)
#endif #endif
#endif /* <6.10.0 */ #endif /* <6.10.0 */
#define kfree (wolfssl_linuxkm_get_pie_redirect_table()->kfree) #define kfree WC_LKM_INDIRECT_SYM(kfree)
#ifdef HAVE_KVMALLOC #ifdef HAVE_KVMALLOC
#define kvfree (wolfssl_linuxkm_get_pie_redirect_table()->kvfree) #define kvfree WC_LKM_INDIRECT_SYM(kvfree)
#endif #endif
#define ksize (wolfssl_linuxkm_get_pie_redirect_table()->ksize) #define ksize WC_LKM_INDIRECT_SYM(ksize)
#define get_random_bytes (wolfssl_linuxkm_get_pie_redirect_table()->get_random_bytes) #define get_random_bytes WC_LKM_INDIRECT_SYM(get_random_bytes)
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)
#define getnstimeofday (wolfssl_linuxkm_get_pie_redirect_table()->getnstimeofday) #define getnstimeofday WC_LKM_INDIRECT_SYM(getnstimeofday)
#elif LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0) #elif LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0)
#define current_kernel_time64 (wolfssl_linuxkm_get_pie_redirect_table()->current_kernel_time64) #define current_kernel_time64 WC_LKM_INDIRECT_SYM(current_kernel_time64)
#else #else
#define ktime_get_coarse_real_ts64 (wolfssl_linuxkm_get_pie_redirect_table()->ktime_get_coarse_real_ts64) #define ktime_get_coarse_real_ts64 WC_LKM_INDIRECT_SYM(ktime_get_coarse_real_ts64)
#endif #endif
#undef get_current #undef get_current
#define get_current (wolfssl_linuxkm_get_pie_redirect_table()->get_current) #define get_current WC_LKM_INDIRECT_SYM(get_current)
#if defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS) && defined(CONFIG_X86) #if defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS) && defined(CONFIG_X86)
#define allocate_wolfcrypt_linuxkm_fpu_states (wolfssl_linuxkm_get_pie_redirect_table()->allocate_wolfcrypt_linuxkm_fpu_states) #define allocate_wolfcrypt_linuxkm_fpu_states WC_LKM_INDIRECT_SYM(allocate_wolfcrypt_linuxkm_fpu_states)
#define can_save_vector_registers_x86 (wolfssl_linuxkm_get_pie_redirect_table()->can_save_vector_registers_x86) #define can_save_vector_registers_x86 WC_LKM_INDIRECT_SYM(can_save_vector_registers_x86)
#define free_wolfcrypt_linuxkm_fpu_states (wolfssl_linuxkm_get_pie_redirect_table()->free_wolfcrypt_linuxkm_fpu_states) #define free_wolfcrypt_linuxkm_fpu_states WC_LKM_INDIRECT_SYM(free_wolfcrypt_linuxkm_fpu_states)
#define restore_vector_registers_x86 (wolfssl_linuxkm_get_pie_redirect_table()->restore_vector_registers_x86) #define restore_vector_registers_x86 WC_LKM_INDIRECT_SYM(restore_vector_registers_x86)
#define save_vector_registers_x86 (wolfssl_linuxkm_get_pie_redirect_table()->save_vector_registers_x86) #define save_vector_registers_x86 WC_LKM_INDIRECT_SYM(save_vector_registers_x86)
#elif defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS) #elif defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS)
#error WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS is set for an unsupported architecture. #error WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS is set for an unsupported architecture.
#endif /* WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS */ #endif /* WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS */
#define __mutex_init (wolfssl_linuxkm_get_pie_redirect_table()->__mutex_init) #define __mutex_init WC_LKM_INDIRECT_SYM(__mutex_init)
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)
#define mutex_lock_nested (wolfssl_linuxkm_get_pie_redirect_table()->mutex_lock_nested) #define mutex_lock_nested WC_LKM_INDIRECT_SYM(mutex_lock_nested)
#else #else
#define mutex_lock (wolfssl_linuxkm_get_pie_redirect_table()->mutex_lock) #define mutex_lock WC_LKM_INDIRECT_SYM(mutex_lock)
#endif #endif
#define mutex_unlock (wolfssl_linuxkm_get_pie_redirect_table()->mutex_unlock) #define mutex_unlock WC_LKM_INDIRECT_SYM(mutex_unlock)
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)
#define mutex_destroy (wolfssl_linuxkm_get_pie_redirect_table()->mutex_destroy) #define mutex_destroy WC_LKM_INDIRECT_SYM(mutex_destroy)
#endif #endif
/* per linux/ctype.h, tolower() and toupper() are macros bound to static inlines /* per linux/ctype.h, tolower() and toupper() are macros bound to static inlines
@@ -1009,45 +1038,45 @@
#define toupper(c) (isupper(c) ? (c) : ((c) - ('a'-'A'))) #define toupper(c) (isupper(c) ? (c) : ((c) - ('a'-'A')))
#if !defined(WOLFCRYPT_ONLY) && !defined(NO_CERTS) #if !defined(WOLFCRYPT_ONLY) && !defined(NO_CERTS)
#define GetCA (wolfssl_linuxkm_get_pie_redirect_table()->GetCA) #define GetCA WC_LKM_INDIRECT_SYM(GetCA)
#ifndef NO_SKID #ifndef NO_SKID
#define GetCAByName (wolfssl_linuxkm_get_pie_redirect_table()->GetCAByName) #define GetCAByName WC_LKM_INDIRECT_SYM(GetCAByName)
#ifdef HAVE_OCSP #ifdef HAVE_OCSP
#define GetCAByKeyHash (wolfssl_linuxkm_get_pie_redirect_table()->GetCAByKeyHash) #define GetCAByKeyHash WC_LKM_INDIRECT_SYM(GetCAByKeyHash)
#endif /* HAVE_OCSP */ #endif /* HAVE_OCSP */
#endif /* NO_SKID */ #endif /* NO_SKID */
#ifdef WOLFSSL_AKID_NAME #ifdef WOLFSSL_AKID_NAME
#define GetCAByAKID (wolfssl_linuxkm_get_pie_redirect_table()->GetCAByAKID) #define GetCAByAKID WC_LKM_INDIRECT_SYM(GetCAByAKID)
#endif #endif
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
#define wolfSSL_X509_NAME_add_entry_by_NID (wolfssl_linuxkm_get_pie_redirect_table()->wolfSSL_X509_NAME_add_entry_by_NID) #define wolfSSL_X509_NAME_add_entry_by_NID WC_LKM_INDIRECT_SYM(wolfSSL_X509_NAME_add_entry_by_NID)
#define wolfSSL_X509_NAME_free (wolfssl_linuxkm_get_pie_redirect_table()->wolfSSL_X509_NAME_free) #define wolfSSL_X509_NAME_free WC_LKM_INDIRECT_SYM(wolfSSL_X509_NAME_free)
#define wolfSSL_X509_NAME_new_ex (wolfssl_linuxkm_get_pie_redirect_table()->wolfSSL_X509_NAME_new_ex) #define wolfSSL_X509_NAME_new_ex WC_LKM_INDIRECT_SYM(wolfSSL_X509_NAME_new_ex)
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#endif /* !WOLFCRYPT_ONLY && !NO_CERTS */ #endif /* !WOLFCRYPT_ONLY && !NO_CERTS */
#ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES #ifdef WOLFSSL_DEBUG_BACKTRACE_ERROR_CODES
#define dump_stack (wolfssl_linuxkm_get_pie_redirect_table()->dump_stack) #define dump_stack WC_LKM_INDIRECT_SYM(dump_stack)
#endif #endif
#undef preempt_count /* just in case -- not a macro on x86. */ #undef preempt_count /* just in case -- not a macro on x86. */
#define preempt_count (wolfssl_linuxkm_get_pie_redirect_table()->preempt_count) #define preempt_count WC_LKM_INDIRECT_SYM(preempt_count)
#ifndef WOLFSSL_LINUXKM_USE_MUTEXES #ifndef WOLFSSL_LINUXKM_USE_MUTEXES
#ifndef _raw_spin_lock_irqsave #ifndef _raw_spin_lock_irqsave
#define _raw_spin_lock_irqsave (wolfssl_linuxkm_get_pie_redirect_table()->_raw_spin_lock_irqsave) #define _raw_spin_lock_irqsave WC_LKM_INDIRECT_SYM(_raw_spin_lock_irqsave)
#endif #endif
#ifndef _raw_spin_trylock #ifndef _raw_spin_trylock
#define _raw_spin_trylock (wolfssl_linuxkm_get_pie_redirect_table()->_raw_spin_trylock) #define _raw_spin_trylock WC_LKM_INDIRECT_SYM(_raw_spin_trylock)
#endif #endif
#ifndef _raw_spin_unlock_irqrestore #ifndef _raw_spin_unlock_irqrestore
#define _raw_spin_unlock_irqrestore (wolfssl_linuxkm_get_pie_redirect_table()->_raw_spin_unlock_irqrestore) #define _raw_spin_unlock_irqrestore WC_LKM_INDIRECT_SYM(_raw_spin_unlock_irqrestore)
#endif #endif
#endif #endif
#define _cond_resched (wolfssl_linuxkm_get_pie_redirect_table()->_cond_resched) #define _cond_resched WC_LKM_INDIRECT_SYM(_cond_resched)
/* this is defined in linux/spinlock.h as an inline that calls the unshimmed /* this is defined in linux/spinlock.h as an inline that calls the unshimmed
* raw_spin_unlock_irqrestore(). use a macro here to supersede it. * raw_spin_unlock_irqrestore(). use a macro here to supersede it.
@@ -1190,7 +1219,7 @@
*/ */
static __always_inline int wc_LockMutex(wolfSSL_Mutex *m) static __always_inline int wc_LockMutex(wolfSSL_Mutex *m)
{ {
return (wolfssl_linuxkm_get_pie_redirect_table()->wc_lkm_LockMutex)(m); return WC_LKM_INDIRECT_SYM(wc_lkm_LockMutex)(m);
} }
#else /* !__PIE__ */ #else /* !__PIE__ */

View File

@@ -4628,13 +4628,13 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
noinstr void my__alt_cb_patch_nops(struct alt_instr *alt, __le32 *origptr, noinstr void my__alt_cb_patch_nops(struct alt_instr *alt, __le32 *origptr,
__le32 *updptr, int nr_inst) __le32 *updptr, int nr_inst)
{ {
return (wolfssl_linuxkm_get_pie_redirect_table()-> return WC_LKM_INDIRECT_SYM(alt_cb_patch_nops)
alt_cb_patch_nops)(alt, origptr, updptr, nr_inst); (alt, origptr, updptr, nr_inst);
} }
void my__queued_spin_lock_slowpath(struct qspinlock *lock, u32 val) void my__queued_spin_lock_slowpath(struct qspinlock *lock, u32 val)
{ {
return (wolfssl_linuxkm_get_pie_redirect_table()-> return WC_LKM_INDIRECT_SYM(queued_spin_lock_slowpath)
queued_spin_lock_slowpath)(lock, val); (lock, val);
} }
#endif #endif