linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ARM: decompressor: disable stack protector
@ 2021-10-26  8:27 Ard Biesheuvel
  2021-10-26 17:14 ` Kees Cook
  2021-10-26 17:58 ` Linus Walleij
  0 siblings, 2 replies; 3+ messages in thread
From: Ard Biesheuvel @ 2021-10-26  8:27 UTC (permalink / raw)
  To: linux; +Cc: linus.walleij, arnd, keescook, linux-arm-kernel, Ard Biesheuvel

Enabling the stack protector in the decompressor is of dubious value,
given that it uses a fixed value for the canary, cannot print any output
unless CONFIG_DEBUG_LL is enabled (which relies on board specific build
time settings), and is already disabled for a good chunk of the code
(libfdt).

So let's just disable it in the decompressor. This will make it easier
in the future to manage the command line options that would need to be
removed again in this context for the TLS register based stack
protector.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 arch/arm/boot/compressed/Makefile | 6 +-----
 arch/arm/boot/compressed/misc.c   | 7 -------
 2 files changed, 1 insertion(+), 12 deletions(-)

diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index 91265e7ff672..e2bd084b1cdf 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -93,11 +93,6 @@ ifeq ($(CONFIG_USE_OF),y)
 OBJS	+= $(libfdt_objs) fdt_check_mem_start.o
 endif
 
-# -fstack-protector-strong triggers protection checks in this code,
-# but it is being used too early to link to meaningful stack_chk logic.
-$(foreach o, $(libfdt_objs) atags_to_fdt.o fdt_check_mem_start.o, \
-	$(eval CFLAGS_$(o) := -I $(srctree)/scripts/dtc/libfdt -fno-stack-protector))
-
 targets       := vmlinux vmlinux.lds piggy_data piggy.o \
 		 lib1funcs.o ashldi3.o bswapsdi2.o \
 		 head.o $(OBJS)
@@ -107,6 +102,7 @@ clean-files += lib1funcs.S ashldi3.S bswapsdi2.S hyp-stub.S
 KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
 
 ccflags-y := -fpic $(call cc-option,-mno-single-pic-base,) -fno-builtin \
+	     -I$(srctree)/scripts/dtc/libfdt -fno-stack-protector \
 	     -I$(obj) $(DISABLE_ARM_SSP_PER_TASK_PLUGIN)
 ccflags-remove-$(CONFIG_FUNCTION_TRACER) += -pg
 asflags-y := -DZIMAGE
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c
index e1e9a5dde853..c3c66ff2d696 100644
--- a/arch/arm/boot/compressed/misc.c
+++ b/arch/arm/boot/compressed/misc.c
@@ -128,13 +128,6 @@ asmlinkage void __div0(void)
 	error("Attempting division by 0!");
 }
 
-const unsigned long __stack_chk_guard = 0x000a0dff;
-
-void __stack_chk_fail(void)
-{
-	error("stack-protector: Kernel stack is corrupted\n");
-}
-
 extern int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x));
 
 
-- 
2.30.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] ARM: decompressor: disable stack protector
  2021-10-26  8:27 [PATCH] ARM: decompressor: disable stack protector Ard Biesheuvel
@ 2021-10-26 17:14 ` Kees Cook
  2021-10-26 17:58 ` Linus Walleij
  1 sibling, 0 replies; 3+ messages in thread
From: Kees Cook @ 2021-10-26 17:14 UTC (permalink / raw)
  To: Ard Biesheuvel; +Cc: linux, linus.walleij, arnd, linux-arm-kernel

On Tue, Oct 26, 2021 at 10:27:52AM +0200, Ard Biesheuvel wrote:
> Enabling the stack protector in the decompressor is of dubious value,
> given that it uses a fixed value for the canary, cannot print any output
> unless CONFIG_DEBUG_LL is enabled (which relies on board specific build
> time settings), and is already disabled for a good chunk of the code
> (libfdt).
> 
> So let's just disable it in the decompressor. This will make it easier
> in the future to manage the command line options that would need to be
> removed again in this context for the TLS register based stack
> protector.
> 
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>

Yeah, that's fine. There's no good reason to complicate the decompressor
for the stack protector. If someone is trying to exploit the kernel at
this stage, the system has a much bigger problem. ;)

Acked-by: Kees Cook <keescook@chromium.org>

-- 
Kees Cook

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] ARM: decompressor: disable stack protector
  2021-10-26  8:27 [PATCH] ARM: decompressor: disable stack protector Ard Biesheuvel
  2021-10-26 17:14 ` Kees Cook
@ 2021-10-26 17:58 ` Linus Walleij
  1 sibling, 0 replies; 3+ messages in thread
From: Linus Walleij @ 2021-10-26 17:58 UTC (permalink / raw)
  To: Ard Biesheuvel; +Cc: Russell King, Arnd Bergmann, Kees Cook, Linux ARM

On Tue, Oct 26, 2021 at 10:28 AM Ard Biesheuvel <ardb@kernel.org> wrote:

> Enabling the stack protector in the decompressor is of dubious value,
> given that it uses a fixed value for the canary, cannot print any output
> unless CONFIG_DEBUG_LL is enabled (which relies on board specific build
> time settings), and is already disabled for a good chunk of the code
> (libfdt).
>
> So let's just disable it in the decompressor. This will make it easier
> in the future to manage the command line options that would need to be
> removed again in this context for the TLS register based stack
> protector.
>
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>

Makes sense.
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-10-26 18:00 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-10-26  8:27 [PATCH] ARM: decompressor: disable stack protector Ard Biesheuvel
2021-10-26 17:14 ` Kees Cook
2021-10-26 17:58 ` Linus Walleij

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).