From: Kees Cook Date: Wed, 31 May 2023 00:34:15 +0000 (-0700) Subject: s390/purgatory: Do not use fortified string functions X-Git-Tag: v6.6.17~4409^2~16 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4ce1e94175696b8f5f6fa29f09f7ef56724ddc2a;p=platform%2Fkernel%2Flinux-rpi.git s390/purgatory: Do not use fortified string functions With the addition of -fstrict-flex-arrays=3, struct sha256_state's trailing array is no longer ignored by CONFIG_FORTIFY_SOURCE: struct sha256_state { u32 state[SHA256_DIGEST_SIZE / 4]; u64 count; u8 buf[SHA256_BLOCK_SIZE]; }; This means that the memcpy() calls with "buf" as a destination in sha256.c's code will attempt to perform run-time bounds checking, which could lead to calling missing functions, specifically a potential WARN_ONCE, which isn't callable from purgatory. Reported-by: Thorsten Leemhuis Closes: https://lore.kernel.org/lkml/175578ec-9dec-7a9c-8d3a-43f24ff86b92@leemhuis.info/ Bisected-by: "Joan Bruguera Micó" Fixes: df8fc4e934c1 ("kbuild: Enable -fstrict-flex-arrays=3") Cc: Heiko Carstens Cc: Vasily Gorbik Cc: Alexander Gordeev Cc: Christian Borntraeger Cc: Sven Schnelle Cc: Masahiro Yamada Cc: Linux Kernel Functional Testing Cc: Nathan Chancellor Cc: "Gustavo A. R. Silva" Cc: linux-s390@vger.kernel.org Signed-off-by: Kees Cook Reviewed-by: Nathan Chancellor Link: https://lore.kernel.org/r/20230531003414.never.050-kees@kernel.org --- diff --git a/arch/s390/purgatory/Makefile b/arch/s390/purgatory/Makefile index 32573b4..cf14740 100644 --- a/arch/s390/purgatory/Makefile +++ b/arch/s390/purgatory/Makefile @@ -10,7 +10,7 @@ PURGATORY_OBJS = $(addprefix $(obj)/,$(purgatory-y)) $(obj)/sha256.o: $(srctree)/lib/crypto/sha256.c FORCE $(call if_changed_rule,cc_o_c) -CFLAGS_sha256.o := -D__DISABLE_EXPORTS +CFLAGS_sha256.o := -D__DISABLE_EXPORTS -D__NO_FORTIFY $(obj)/mem.o: $(srctree)/arch/s390/lib/mem.S FORCE $(call if_changed_rule,as_o_S)