Skip to content

Commit 30487ad

Browse files
committed
linuxkm/: fixes for ARMv7, and miscellaneous fixes for Makefile and FIPS logic.
1 parent 06d3d6d commit 30487ad

File tree

4 files changed

+51
-6
lines changed

4 files changed

+51
-6
lines changed

linuxkm/Kbuild

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ ifeq "$(KERNEL_ARCH)" "aarch64"
4343
WOLFSSL_CFLAGS += -mno-outline-atomics
4444
else ifeq "$(KERNEL_ARCH)" "arm64"
4545
WOLFSSL_CFLAGS += -mno-outline-atomics
46+
else ifeq "$(KERNEL_ARCH)" "arm"
47+
# avoids R_ARM_THM_JUMP11 relocations, including a stubborn tail recursion
48+
# optimization from wc_sp_cmp to wc_sp_cmp_mag:
49+
WOLFSSL_CFLAGS += -fno-optimize-sibling-calls -Os
4650
endif
4751

4852
obj-m := libwolfssl.o
@@ -97,7 +101,7 @@ else
97101
WOLFSSL_CFLAGS_YES_VECTOR_INSNS := $(WOLFSSL_CFLAGS_NO_VECTOR_INSNS)
98102
endif
99103

100-
ccflags-y := $(WOLFSSL_CFLAGS) $(WOLFSSL_CFLAGS_NO_VECTOR_INSNS)
104+
ccflags-y = $(WOLFSSL_CFLAGS) $(WOLFSSL_CFLAGS_NO_VECTOR_INSNS)
101105

102106
ifeq "$(ENABLED_LINUXKM_PIE)" "yes"
103107
# note, we need -fno-stack-protector to avoid references to
@@ -142,7 +146,7 @@ ifeq "$(ENABLED_LINUXKM_PIE)" "yes"
142146
endif
143147

144148
ifdef KERNEL_EXTRA_CFLAGS_REMOVE
145-
ccflags-remove-y += KERNEL_EXTRA_CFLAGS_REMOVE
149+
ccflags-remove-y += $(KERNEL_EXTRA_CFLAGS_REMOVE)
146150
endif
147151

148152
$(obj)/libwolfssl.mod.o: ccflags-y := $(PIE_SUPPORT_FLAGS)

linuxkm/Makefile

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,47 @@ endif
207207
.PHONY: libwolfssl.ko
208208
libwolfssl.ko:
209209
@set -e
210+
@[[ '$(V)' == 1 ]] && { echo 'MODULE_TOP = "$(MODULE_TOP)"';
211+
echo 'SRC_TOP = "$(SRC_TOP)"';
212+
echo 'AM_CPPFLAGS = "$(AM_CPPFLAGS)"';
213+
echo 'CPPFLAGS = "$(CPPFLAGS)"';
214+
echo 'AM_CFLAGS = "$(AM_CFLAGS)"';
215+
echo 'CFLAGS = "$(CFLAGS)"';
216+
echo 'KERNEL_EXTRA_CFLAGS = "$(KERNEL_EXTRA_CFLAGS)"';
217+
echo 'FIPS_OPTEST = "$(FIPS_OPTEST)"';
218+
echo 'AM_CCASFLAGS = "$(AM_CCASFLAGS)"';
219+
echo 'CCASFLAGS = "$(CCASFLAGS)"';
220+
echo 'src_libwolfssl_la_OBJECTS = "$(src_libwolfssl_la_OBJECTS)"';
221+
echo 'ENABLED_CRYPT_TESTS = "$(ENABLED_CRYPT_TESTS)"';
222+
echo 'ENABLED_LINUXKM_LKCAPI_REGISTER = "$(ENABLED_LINUXKM_LKCAPI_REGISTER)"';
223+
echo 'ENABLED_LINUXKM_BENCHMARKS = "$(ENABLED_LINUXKM_BENCHMARKS)"';
224+
echo 'ENABLED_LINUXKM_PIE = "$(ENABLED_LINUXKM_PIE)"';
225+
echo 'host_triplet = "$(host_triplet)"';
226+
echo 'build_triplet = "$(build_triplet)"';
227+
echo 'CC = "$(CC)"';
228+
echo 'AS = "$(AS)"';
229+
echo 'LD = "$(LD)"';
230+
echo 'READELF = "$(READELF)"';
231+
echo 'AWK = "$(AWK)"';
232+
echo 'TMPDIR = "$(TMPDIR)"';
233+
echo 'MAKE_TMPDIR = "$(MAKE_TMPDIR)"';
234+
echo 'KERNEL_ROOT = "$(KERNEL_ROOT)"';
235+
echo 'obj = "$(obj)"';
236+
echo 'RM = "$(RM)"';
237+
echo 'KERNEL_ARCH = "$(KERNEL_ARCH)"';
238+
echo 'FIPS_HASH = "$(FIPS_HASH)"';
239+
echo 'MAKE = "$(MAKE)"';
240+
echo 'ENABLED_ASM = "$(ENABLED_ASM)"';
241+
echo 'CFLAGS_FPU_DISABLE = "$(CFLAGS_FPU_DISABLE)"';
242+
echo 'CFLAGS_FPU_ENABLE = "$(CFLAGS_FPU_ENABLE)"';
243+
echo 'CFLAGS_SIMD_DISABLE = "$(CFLAGS_SIMD_DISABLE)"';
244+
echo 'CFLAGS_SIMD_ENABLE = "$(CFLAGS_SIMD_ENABLE)"';
245+
echo 'CFLAGS_AUTO_VECTORIZE_DISABLE = "$(CFLAGS_AUTO_VECTORIZE_DISABLE)"';
246+
echo 'CFLAGS_AUTO_VECTORIZE_ENABLE = "$(CFLAGS_AUTO_VECTORIZE_ENABLE)"';
247+
echo 'ASFLAGS_FPU_DISABLE_SIMD_ENABLE = "$(ASFLAGS_FPU_DISABLE_SIMD_ENABLE)"';
248+
echo 'ASFLAGS_FPU_ENABLE_SIMD_DISABLE = "$(ASFLAGS_FPU_ENABLE_SIMD_DISABLE)"';
249+
echo 'ASFLAGS_FPUSIMD_DISABLE = "$(ASFLAGS_FPUSIMD_DISABLE)"';
250+
echo 'ASFLAGS_FPUSIMD_ENABLE = "$(ASFLAGS_FPUSIMD_ENABLE)"'; }
210251
@function resolved_link_is_equal() { [[ -L "$$1" && "$$(readlink -f "$$1")" == "$$(readlink -f "$$2")" ]]; }
211252
@if test -z '$(KERNEL_ROOT)'; then echo '$$KERNEL_ROOT is unset' >&2; exit 1; fi
212253
@if test -z '$(AM_CFLAGS)$(CFLAGS)'; then echo '$$AM_CFLAGS and $$CFLAGS are both unset.' >&2; exit 1; fi

linuxkm/lkcapi_sha_glue.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1198,7 +1198,7 @@ static int wc_linuxkm_drbg_seed(struct crypto_rng *tfm,
11981198
{
11991199
struct wc_linuxkm_drbg_ctx *ctx = (struct wc_linuxkm_drbg_ctx *)crypto_rng_ctx(tfm);
12001200
u8 *seed_copy = NULL;
1201-
int ret;
1201+
int ret = 0;
12021202
int n;
12031203

12041204
if ((tfm->base.__crt_alg->cra_init != wc_linuxkm_drbg_init_tfm) ||

linuxkm/module_hooks.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,11 @@ static void lkmFipsCb(int ok, int err, const char* hash)
142142
}
143143
}
144144
}
145-
#endif
146145

147146
#ifdef WOLFCRYPT_FIPS_CORE_DYNAMIC_HASH_VALUE
148147
static int updateFipsHash(void);
149148
#endif
149+
#endif /* HAVE_FIPS */
150150

151151
#ifdef WOLFSSL_LINUXKM_BENCHMARKS
152152
extern int wolfcrypt_benchmark_main(int argc, char** argv);
@@ -1507,7 +1507,7 @@ static int set_up_wolfssl_linuxkm_pie_redirect_table(void) {
15071507

15081508
#endif /* WC_PIE_RELOC_TABLES */
15091509

1510-
#ifdef WOLFCRYPT_FIPS_CORE_DYNAMIC_HASH_VALUE
1510+
#if defined(HAVE_FIPS) && defined(WOLFCRYPT_FIPS_CORE_DYNAMIC_HASH_VALUE)
15111511

15121512
#include <wolfssl/wolfcrypt/coding.h>
15131513

@@ -1763,7 +1763,7 @@ static int updateFipsHash(void)
17631763
return ret;
17641764
}
17651765

1766-
#endif /* WOLFCRYPT_FIPS_CORE_DYNAMIC_HASH_VALUE */
1766+
#endif /* HAVE_FIPS && WOLFCRYPT_FIPS_CORE_DYNAMIC_HASH_VALUE */
17671767

17681768
#ifdef CONFIG_HAVE_KPROBES
17691769

0 commit comments

Comments
 (0)