@@ -73,17 +73,17 @@ OVERRIDE_PATHS :=
7373
7474ifdef CC
7575 ifneq "$(CC)" "cc"
76- OVERRIDE_PATHS := $(OVERRIDE_PATHS ) 'CC=$(CC ) '
76+ OVERRIDE_PATHS := $(OVERRIDE_PATHS) 'CC=$(CC)'
7777 endif
7878endif
7979ifdef AS
8080 ifneq "$(AS)" "as"
81- OVERRIDE_PATHS := $(OVERRIDE_PATHS ) 'AS=$(AS ) '
81+ OVERRIDE_PATHS := $(OVERRIDE_PATHS) 'AS=$(AS)'
8282 endif
8383endif
8484ifdef LD
8585 ifneq "$(LD)" "ld"
86- OVERRIDE_PATHS := $(OVERRIDE_PATHS ) 'LD=$(LD ) '
86+ OVERRIDE_PATHS := $(OVERRIDE_PATHS) 'LD=$(LD)'
8787 endif
8888endif
8989
@@ -103,14 +103,39 @@ ifndef MAKE_TMPDIR
103103 MAKE_TMPDIR := $(TMPDIR )
104104endif
105105
106- GENERATE_RELOC_TAB := $(AWK ) 'BEGIN { \
106+ GENERATE_SECTION_MAP := $(AWK ) 'BEGIN { printf("") >ENVIRON["SECTION_MAP"]; } \
107+ { \
108+ if ($$7 !~ "^[0-9]+$$") \
109+ next; \
110+ if ($$4 == "SECTION") { \
111+ sections[$$7] = $$8; \
112+ next; \
113+ } \
114+ if (($$4 == "NOTYPE") || ($$4 == "OBJECT") || ($$4 == "FUNC")) { \
115+ if (($$8 == "$$d") || ($$8 == "$$t")) \
116+ next; \
117+ if ($$7 in sections) { \
118+ if (sections[$$7] ~ "_wolfcrypt$$") \
119+ print $$8 "\t" sections[$$7] >>ENVIRON["SECTION_MAP"]; \
120+ } else \
121+ print $$8 " is in section " $$7 " with no name mapping." >"/dev/stderr";\
122+ } \
123+ }'
124+
125+ GENERATE_RELOC_TAB := $(AWK ) ' \
126+ BEGIN { \
107127 n=0; \
108128 bad_relocs=0; \
109129 print "\# include <wolfssl/wolfcrypt/libwolfssl_sources.h>"; \
110130 printf("%s\n ", \
111- "WOLFSSL_LOCAL const unsigned int wc_linuxkm_pie_reloc_tab[] = { "); \
131+ "WOLFSSL_LOCAL const unsigned int wc_linuxkm_pie_reloc_tab[] = { "); \
132+ if ("SECTION_MAP" in ENVIRON) { \
133+ while (getline <ENVIRON["SECTION_MAP"] > 0) \
134+ section_map[$$1] = $$2; \
135+ close(ENVIRON["SECTION_MAP"]); \
136+ } \
112137 } \
113- /^Relocation section '\''\.rela\.text_wolfcrypt'\''/ { \
138+ /^Relocation section '\''\.rela? \.text_wolfcrypt'\''/ { \
114139 p=1; \
115140 next; \
116141 } \
@@ -119,19 +144,55 @@ GENERATE_RELOC_TAB := $(AWK) 'BEGIN { \
119144 } \
120145 /^0/ { \
121146 if (p) { \
122- if ($$3 !~ "^(R_X86_64_PLT32|R_X86_64_PC32|R_AARCH64_.*)$$") { \
123- print "Unexpected relocation type:\n" $$0 >"/dev/stderr"; \
124- ++bad_relocs; \
125- } \
126- printf("0x%s%s", \
127- gensub("^0*","",1,$$1), \
128- ((++n%8) ? ", " : ",\n ")); \
147+ if ($$3 !~ "^(R_X86_64_PLT32|R_X86_64_PC32|R_AARCH64_.*|R_ARM.*)$$") { \
148+ print "Unexpected relocation type:\n" $$0 >"/dev/stderr"; \
149+ ++bad_relocs; \
150+ } \
151+ if ($$5 in section_map) \
152+ section = section_map[$$5]; \
153+ else if ($$5 ~ "^\\.") \
154+ section = $$5; \
155+ else \
156+ section = ""; \
157+ if (section) { \
158+ switch (section) { \
159+ case ".text_wolfcrypt": \
160+ section_tag = 0; \
161+ break; \
162+ case ".rodata_wolfcrypt": \
163+ section_tag = 1; \
164+ break; \
165+ case ".data_wolfcrypt": \
166+ section_tag = 2; \
167+ break; \
168+ case ".bss_wolfcrypt": \
169+ section_tag = 3; \
170+ break; \
171+ default: \
172+ print "Unexpected section:\n" $$0 >"/dev/stderr"; \
173+ ++bad_relocs; \
174+ section_tag = 4; \
175+ } \
176+ } else { \
177+ print "Unresolvable symbol reference for relocation:\n" $$0 >"/dev/stderr";\
178+ ++bad_relocs; \
179+ section_tag = 4; \
180+ } \
181+ if (strtonum("0x" gensub("^0*","",1,$$1)) >= lshift(1, 29)) { \
182+ print "Relocation offset overflow:" >"/dev/stderr"; \
183+ print >"/dev/stderr"; \
184+ exit(1); \
185+ } \
186+ printf("0x%xU%s", \
187+ or(strtonum("0x" gensub("^0*","",1,$$1)), \
188+ lshift(section_tag, 29)), \
189+ ((++n%8) ? ", " : ",\n ")); \
129190 } \
130191 } \
131192 END { \
132193 if (bad_relocs) { \
133- print "Found " bad_relocs " unexpected relocations." >"/dev/stderr"; \
134- exit(1); \
194+ print "Found " bad_relocs " unresolvable relocations." >"/dev/stderr"; \
195+ exit(1); \
135196 } \
136197 print "~0U };\nWOLFSSL_LOCAL const unsigned long wc_linuxkm_pie_reloc_tab_length = sizeof wc_linuxkm_pie_reloc_tab / sizeof wc_linuxkm_pie_reloc_tab[0];";\
137198 }'
@@ -140,88 +201,139 @@ ifeq "$(V)" "1"
140201 vflag := --verbose
141202endif
142203
204+ # This rule is .PHONY because it doesn't actually build the module -- Kbuild
205+ # does, and we always need to call Kbuild to enforce rebuild for dependencies
206+ # and config changes.
143207.PHONY : libwolfssl.ko
144208libwolfssl.ko :
145- @function resolved_link_is_equal () { [[ -L " $$ 1" && (" $$ (readlink -f " $$ 1" )" == " $$ (readlink -f " $$ 2" )" ) ]] }
209+ @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)"' ; }
251+ @function resolved_link_is_equal () { [[ -L " $$ 1" && " $$ (readlink -f " $$ 1" )" == " $$ (readlink -f " $$ 2" )" ]]; }
146252 @if test -z ' $(KERNEL_ROOT)' ; then echo ' $$KERNEL_ROOT is unset' >&2 ; exit 1; fi
147253 @if test -z ' $(AM_CFLAGS)$(CFLAGS)' ; then echo ' $$AM_CFLAGS and $$CFLAGS are both unset.' >&2 ; exit 1; fi
148254 @if test -z ' $(src_libwolfssl_la_OBJECTS)' ; then echo ' $$src_libwolfssl_la_OBJECTS is unset.' >&2 ; exit 1; fi
149- # after commit 9a0ebe5011 (6.10), sources must be in $(obj). work around this by making links to all needed sources:
255+ # after commit 9a0ebe5011 (6.10), sources must be in $(obj). work around this by making links to all needed sources:
150256 @mkdir -p ' $(MODULE_TOP)/linuxkm'
151257 @resolved_link_is_equal ' $(MODULE_TOP)/linuxkm/module_hooks.c' ' $(MODULE_TOP)/module_hooks.c' || cp $(vflag ) --no-dereference --symbolic-link --no-clobber ' $(MODULE_TOP)' /* .[ch] ' $(MODULE_TOP)/linuxkm/'
152258 @resolved_link_is_equal ' $(MODULE_TOP)/wolfcrypt/src/wc_port.c' ' $(SRC_TOP)/wolfcrypt/src/wc_port.c' || cp $(vflag ) --no-dereference --symbolic-link --no-clobber --recursive ' $(SRC_TOP)/wolfcrypt' ' $(MODULE_TOP)/'
153259 @resolved_link_is_equal ' $(MODULE_TOP)/src/wolfio.c' ' $(SRC_TOP)/src/wolfio.c' || cp $(vflag ) --no-dereference --symbolic-link --no-clobber --recursive ' $(SRC_TOP)/src' ' $(MODULE_TOP)/'
154260ifeq "$(FIPS_OPTEST ) " "1"
155- @resolved_link_is_equal '$(MODULE_TOP)/linuxkm/optest-140-3/linuxkm_optest_wrapper.c' '$(SRC_TOP)/../fips/optest-140-3/linuxkm_optest_wrapper.c' || cp $(vflag) --no-dereference --symbolic-link --no-clobber --recursive '$(SRC_TOP)/../fips/optest-140-3' '$(MODULE_TOP)/linuxkm'
261+ @resolved_link_is_equal '$(MODULE_TOP)/linuxkm/optest-140-3/linuxkm_optest_wrapper.c' '$(SRC_TOP)/../fips/optest-140-3/linuxkm_optest_wrapper.c' || cp $(vflag) --no-dereference --symbolic-link --no-clobber --recursive '$(SRC_TOP)/../fips/optest-140-3' '$(MODULE_TOP)/linuxkm/ '
156262endif
157263ifeq "$(ENABLED_LINUXKM_PIE ) " "yes"
158264 @[[ -f '$(MODULE_TOP)/linuxkm/wc_linuxkm_pie_reloc_tab.c' && ! -L '$(MODULE_TOP)/linuxkm/wc_linuxkm_pie_reloc_tab.c' ]] || \
159265 { $(RM) -f '$(MODULE_TOP)/linuxkm/wc_linuxkm_pie_reloc_tab.c' && $(GENERATE_RELOC_TAB) < /dev/null > '$(MODULE_TOP)/linuxkm/wc_linuxkm_pie_reloc_tab.c'; }
160- @$(eval RELOC_TMP := $(shell mktemp "$(MAKE_TMPDIR)/wc_linuxkm_pie_reloc_tab.c.XXXXXX"))
161- @if [[ -f libwolfssl.ko ]]; then touch -r libwolfssl.ko '$(RELOC_TMP)'; fi
266+ @RELOC_TMP=$$(mktemp "$(MAKE_TMPDIR)/wc_linuxkm_pie_reloc_tab.c.XXXXXX")
267+ @trap 'rm "$$RELOC_TMP"' EXIT
268+ @if [[ -f "$@" ]]; then touch -r "$@" "$$RELOC_TMP"; fi
162269 +$(MAKE) ARCH='$(KERNEL_ARCH)' $(OVERRIDE_PATHS) $(CROSS_COMPILE) -C '$(KERNEL_ROOT)' M='$(MODULE_TOP)' $(KBUILD_EXTRA_FLAGS) CC_FLAGS_FTRACE=
163270 # if the above make didn't build a fresh libwolfssl.ko, then the module is already up to date and we leave it untouched, assuring stability for purposes of module-update-fips-hash.
164- @if [[ ! libwolfssl.ko -nt '$(RELOC_TMP)' ]]; then rm '$(RELOC_TMP)'; echo ' Module already up-to-date.'; exit 0; fi
165- @$(READELF) --wide -r libwolfssl.ko | $(GENERATE_RELOC_TAB) >| '$(MODULE_TOP)/linuxkm/wc_linuxkm_pie_reloc_tab.c'
271+ @if [[ ! "$@" -nt "$$RELOC_TMP" ]]; then echo ' Module already up-to-date.'; exit 0; fi
272+ @SECTION_MAP=$$(mktemp)
273+ @trap 'rm "$$SECTION_MAP"' EXIT
274+ @export SECTION_MAP
275+ @$(READELF) --wide --symbols "$@" | $(GENERATE_SECTION_MAP)
276+ @$(READELF) --wide --relocs "$@" | $(GENERATE_RELOC_TAB) >| '$(MODULE_TOP)/linuxkm/wc_linuxkm_pie_reloc_tab.c'
166277 +$(MAKE) ARCH='$(KERNEL_ARCH)' $(OVERRIDE_PATHS) $(CROSS_COMPILE) -C '$(KERNEL_ROOT)' M='$(MODULE_TOP)' $(KBUILD_EXTRA_FLAGS) CC_FLAGS_FTRACE=
167- @$(READELF) --wide -r libwolfssl.ko | $(GENERATE_RELOC_TAB) >| '$(RELOC_TMP)'
168- @if diff '$(MODULE_TOP)/linuxkm/wc_linuxkm_pie_reloc_tab.c' '$(RELOC_TMP)'; then echo " Relocation table is stable."; else echo "PIE failed: relocation table is unstable." 1>&2; rm '$(RELOC_TMP)'; exit 1; fi
169- @rm '$(RELOC_TMP)'
278+ @$(READELF) --wide --relocs "$@" | $(GENERATE_RELOC_TAB) >| "$$RELOC_TMP"
279+ @if diff '$(MODULE_TOP)/linuxkm/wc_linuxkm_pie_reloc_tab.c' "$$RELOC_TMP"; then echo " Relocation table is stable."; else echo "PIE failed: relocation table is unstable." 1>&2; exit 1; fi
170280else
171281 +$(MAKE) ARCH='$(KERNEL_ARCH)' $(OVERRIDE_PATHS) $(CROSS_COMPILE) -C '$(KERNEL_ROOT)' M='$(MODULE_TOP)' $(KBUILD_EXTRA_FLAGS)
172282endif
173283
174284.PHONY : module-update-fips-hash
175285module-update-fips-hash : libwolfssl.ko
176- @if test -z ' $(FIPS_HASH)' ; then echo ' $$FIPS_HASH is unset' >&2 ; exit 1; fi
286+ @set -e
287+ @if test -z ' $(FIPS_HASH)' ; then echo ' $$FIPS_HASH is unset' >&2 ; exit 1; fi
177288 @if [[ ! ' $(FIPS_HASH)' =~ [0-9a-fA-F]{64} ]]; then echo ' $$FIPS_HASH is malformed' >&2 ; exit 1; fi
178- @readarray -t rodata_segment < <( $( READELF) --wide --sections libwolfssl.ko | \
289+ @readarray -t rodata_segment < <( $( READELF) --wide --sections " $< " | \
179290 sed -E -n ' s/^[[:space:]]*\[[[:space:]]*([0-9]+)\][[:space:]]+\.rodata_wolfcrypt[[:space:]]+PROGBITS[[:space:]]+[0-9a-fA-F]+[[:space:]]+([0-9a-fA-F]+)[[:space:]].*$$/\1\n\2/p' ); \
180291 if [[ $$ {# rodata_segment[@]} != 2 ]]; then echo ' unexpected rodata_segment.' >&2; exit 1; fi; \
181- readarray -t verifyCore_attrs < <( $( READELF) --wide --symbols libwolfssl.ko | \
292+ readarray -t verifyCore_attrs < <( $( READELF) --wide --symbols " $< " | \
182293 sed -E -n ' s/^[[:space:]]*[0-9]+: ([0-9a-fA-F]+)[[:space:]]+([0-9]+)[[:space:]]+OBJECT[[:space:]]+[A-Z]+[[:space:]]+[A-Z]+[[:space:]]+' " $$ {rodata_segment[0]}" ' [[:space:]]+verifyCore$$/\1\n\2/p' ); \
183294 if [[ $$ {# verifyCore_attrs[@]} != 2 ]]; then echo ' unexpected verifyCore_attrs.' >&2; exit 1; fi; \
184- if [[ " $$ {verifyCore_attrs[1]}" != " 65" ]]; then echo " verifyCore has unexpected length $$ {verifyCore_attrs[1]}." >&2 ; exit 1; fi ; \
295+ if [[ " $$ {verifyCore_attrs[1]}" != " 65" ]]; then echo " verifyCore has unexpected length $$ {verifyCore_attrs[1]}." >&2 ; exit 1; fi ; \
185296 verifyCore_offset=$$((0x$${rodata_segment[1]} + 0x$${verifyCore_attrs[0]} ) ); \
186- current_verifyCore=$$(dd bs=1 if=libwolfssl.ko skip=$$verifyCore_offset count=64 status=none ) ; \
297+ current_verifyCore=$$(dd bs=1 if=" $< " skip=$$verifyCore_offset count=64 status=none ) ; \
187298 if [[ ! " $$ current_verifyCore" =~ [0-9a-fA-F]{64} ]]; then echo " verifyCore at offset $$ verifyCore_offset has unexpected value." >&2 ; exit 1; fi ; \
188- if [[ ' $(FIPS_HASH)' == " $$ current_verifyCore" ]]; then echo ' Supplied FIPS_HASH matches existing verifyCore -- no update needed.' ; exit 0; fi ; \
189- echo -n ' $(FIPS_HASH)' | dd bs=1 conv=notrunc of=libwolfssl.ko seek=$$ verifyCore_offset count=64 status=none && \
190- echo " FIPS verifyCore updated successfully." && \
299+ if [[ ' $(FIPS_HASH)' == " $$ current_verifyCore" ]]; then echo ' Supplied FIPS_HASH matches existing verifyCore -- no update needed.' ; exit 0; fi ; \
300+ echo -n ' $(FIPS_HASH)' | dd bs=1 conv=notrunc of=" $< " seek=$$ verifyCore_offset count=64 status=none && \
301+ echo " FIPS verifyCore updated successfully." && \
191302 if [[ -f libwolfssl.ko.signed ]]; then $( MAKE) -C . libwolfssl.ko.signed; fi
192303
193304libwolfssl.ko.signed : libwolfssl.ko
194305ifdef FORCE_NO_MODULE_SIG
195306 @echo 'Skipping module signature operation because FORCE_NO_MODULE_SIG.'
196307else
197- @cd '$(KERNEL_ROOT)' || exit $$?; \
198- while read configline; do \
199- case "$$configline" in \
200- CONFIG_MODULE_SIG*=*) \
201- declare "$${configline%=*}"="$${configline# *=}" \
202- ;; \
203- esac; \
204- done < .config || exit $$?; \
205- if [[ "$${CONFIG_MODULE_SIG}" = "y" && -n "$${CONFIG_MODULE_SIG_KEY}" && \
206- -n "$${CONFIG_MODULE_SIG_HASH}" && ( ! -f '$(MODULE_TOP)/$@' || \
207- '$(MODULE_TOP)/$<' -nt '$(MODULE_TOP)/$@' ) ]]; then \
208- CONFIG_MODULE_SIG_KEY="$${CONFIG_MODULE_SIG_KEY#\"}"; \
209- CONFIG_MODULE_SIG_KEY="$${CONFIG_MODULE_SIG_KEY%\"}"; \
210- CONFIG_MODULE_SIG_HASH="$${CONFIG_MODULE_SIG_HASH#\"}"; \
211- CONFIG_MODULE_SIG_HASH="$${CONFIG_MODULE_SIG_HASH%\"}"; \
212- cp -p '$(MODULE_TOP)/$<' '$(MODULE_TOP)/$@' || exit $$?; \
213- ./scripts/sign-file "$${CONFIG_MODULE_SIG_HASH}" \
214- "$${CONFIG_MODULE_SIG_KEY}" \
215- "$${CONFIG_MODULE_SIG_KEY/%.pem/.x509}" \
216- '$(MODULE_TOP)/$@'; \
217- sign_file_exitval=$$?; \
218- if [[ $$sign_file_exitval != 0 ]]; then \
219- $(RM) -f '$(MODULE_TOP)/$@'; \
220- exit $$sign_file_exitval; \
221- fi; \
222- if [[ "$(quiet)" != "silent_" ]]; then \
223- echo " Module $@ signed by $${CONFIG_MODULE_SIG_KEY}."; \
224- fi \
308+ @set -e
309+ @cd '$(KERNEL_ROOT)'
310+ while read configline; do
311+ case "$$configline" in
312+ CONFIG_MODULE_SIG*=*)
313+ declare "$${configline%=*}"="$${configline# *=}"
314+ ;;
315+ esac
316+ done < .config
317+ if [[ "$${CONFIG_MODULE_SIG}" = "y" && -n "$${CONFIG_MODULE_SIG_KEY}" && \
318+ -n "$${CONFIG_MODULE_SIG_HASH}" && ( ! -f '$(MODULE_TOP)/$@' || \
319+ '$(MODULE_TOP)/$<' -nt '$(MODULE_TOP)/$@' ) ]]; then
320+ CONFIG_MODULE_SIG_KEY="$${CONFIG_MODULE_SIG_KEY# \"}"
321+ CONFIG_MODULE_SIG_KEY="$${CONFIG_MODULE_SIG_KEY%\"}"
322+ CONFIG_MODULE_SIG_HASH="$${CONFIG_MODULE_SIG_HASH# \"}"
323+ CONFIG_MODULE_SIG_HASH="$${CONFIG_MODULE_SIG_HASH%\"}"
324+ cp -p '$(MODULE_TOP)/$<' '$(MODULE_TOP)/$@' || exit $$?
325+ ./scripts/sign-file "$${CONFIG_MODULE_SIG_HASH}" \
326+ "$${CONFIG_MODULE_SIG_KEY}" \
327+ "$${CONFIG_MODULE_SIG_KEY/%.pem/.x509}" \
328+ '$(MODULE_TOP)/$@'
329+ sign_file_exitval=$$?
330+ if [[ $$sign_file_exitval != 0 ]]; then
331+ $(RM) -f '$(MODULE_TOP)/$@'
332+ exit $$sign_file_exitval
333+ fi
334+ if [[ "$(quiet)" != "silent_" ]]; then
335+ echo " Module $@ signed by $${CONFIG_MODULE_SIG_KEY}."
336+ fi
225337 fi
226338endif
227339
@@ -234,10 +346,10 @@ install modules_install:
234346# note, must supply $(MODULE_TOP) as the src value for clean so that Kbuild is included, else
235347# the top Makefile (which is not for the kernel build) would be included here.
236348clean :
349+ +$(MAKE ) -C $(KERNEL_ROOT ) M=$(MODULE_TOP ) src=$(MODULE_TOP ) clean
237350 $(RM ) -rf ' $(MODULE_TOP)/linuxkm'
238351 $(RM ) -rf ' $(MODULE_TOP)/wolfcrypt'
239352 $(RM ) -rf ' $(MODULE_TOP)/src'
240- +$(MAKE ) -C $(KERNEL_ROOT ) M=$(MODULE_TOP ) src=$(MODULE_TOP ) clean
241353
242354.PHONY : check
243355check :
0 commit comments