kbuild: set EXIT trap before creating temporary directory

Swap the order of 'mkdir' and 'trap' just in case the subshell is
interrupted between 'mkdir' and 'trap' although the effect might be
subtle.

This does not intend to make the cleanup perfect. There are more cases
that miss to remove the tmp directory, for example:

 - When interrupted, dash does not invoke the EXIT trap (bash does)

 - 'rm' command might be interrupted before removing the directory

I am not addressing all the cases since the tmp directory is harmless
after all.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
This commit is contained in:
Masahiro Yamada 2022-07-28 12:14:33 +09:00
parent 7193cda917
commit dd29865633
2 changed files with 2 additions and 2 deletions

View File

@ -25,7 +25,7 @@ failure = $(if-success,$(1),n,y)
# $(cc-option,<flag>) # $(cc-option,<flag>)
# Return y if the compiler supports <flag>, n otherwise # Return y if the compiler supports <flag>, n otherwise
cc-option = $(success,mkdir .tmp_$$; trap "rm -rf .tmp_$$" EXIT; $(CC) -Werror $(CLANG_FLAGS) $(1) -c -x c /dev/null -o .tmp_$$/tmp.o) cc-option = $(success,trap "rm -rf .tmp_$$" EXIT; mkdir .tmp_$$; $(CC) -Werror $(CLANG_FLAGS) $(1) -c -x c /dev/null -o .tmp_$$/tmp.o)
# $(ld-option,<flag>) # $(ld-option,<flag>)
# Return y if the linker supports <flag>, n otherwise # Return y if the linker supports <flag>, n otherwise

View File

@ -21,8 +21,8 @@ TMPOUT = $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_$$$$
# automatically cleaned up. # automatically cleaned up.
try-run = $(shell set -e; \ try-run = $(shell set -e; \
TMP=$(TMPOUT)/tmp; \ TMP=$(TMPOUT)/tmp; \
mkdir -p $(TMPOUT); \
trap "rm -rf $(TMPOUT)" EXIT; \ trap "rm -rf $(TMPOUT)" EXIT; \
mkdir -p $(TMPOUT); \
if ($(1)) >/dev/null 2>&1; \ if ($(1)) >/dev/null 2>&1; \
then echo "$(2)"; \ then echo "$(2)"; \
else echo "$(3)"; \ else echo "$(3)"; \