Samuel Holland <sam...@sholland.org> writes: > Hello all, > > On 09/27/18 02:05, Christophe Leroy wrote: > [..snip..] >> diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile >> index 07d9dce7eda6..45b8eb4d8fe7 100644 >> --- a/arch/powerpc/Makefile >> +++ b/arch/powerpc/Makefile >> @@ -112,6 +112,9 @@ KBUILD_LDFLAGS += -m elf$(BITS)$(LDEMULATION) >> KBUILD_ARFLAGS += --target=elf$(BITS)-$(GNUTARGET) >> endif >> >> +cflags-$(CONFIG_STACKPROTECTOR) += -mstack-protector-guard=tls >> +cflags-$(CONFIG_STACKPROTECTOR) += -mstack-protector-guard-reg=r2 >> + >> LDFLAGS_vmlinux-y := -Bstatic >> LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) := -pie >> LDFLAGS_vmlinux := $(LDFLAGS_vmlinux-y) >> @@ -404,6 +407,13 @@ archclean: >> >> archprepare: checkbin >> >> +ifdef CONFIG_STACKPROTECTOR >> +prepare: stack_protector_prepare >> + >> +stack_protector_prepare: prepare0 >> + $(eval KBUILD_CFLAGS += -mstack-protector-guard-offset=$(shell awk '{if >> ($$2 == "TASK_CANARY") print $$3;}' include/generated/asm-offsets.h)) >> +endif >> + > > This breaks when building out-of-tree kernel modules. GCC is not getting > passed > the -mstack-protector-guard-offset argument, so the default offset is used. > The > kernel then panics the first time a function with stack protector is called. > > I'm seeing this on powerpc64. It looks like it was reported for powerpc on > kernel bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=201891
Thanks for the bug report. Alexey also hit this and sent an RFC fix. https://patchwork.ozlabs.org/patch/1022751/ But Masahiro thought we could do something less hacky, and hopefully he can help us come up with something better. cheers