riscv: Do not use fortify in early code
Early code designates the code executed when the MMU is not yet enabled, and this comes with some limitations (see Documentation/arch/riscv/boot.rst, section "Pre-MMU execution"). FORTIFY_SOURCE must be disabled then since it can trigger kernel panics as reported in [1]. Reported-by: Jason Montleon <jmontleo@redhat.com> Closes: https://lore.kernel.org/linux-riscv/CAJD_bPJes4QhmXY5f63GHV9B9HFkSCoaZjk-qCT2NGS7Q9HODg@mail.gmail.com/ [1] Fixes:a35707c3d8
("riscv: add memory-type errata for T-Head") Fixes:26e7aacb83
("riscv: Allow to downgrade paging mode from the command line") Cc: stable@vger.kernel.org Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com> Link: https://lore.kernel.org/r/20241009072749.45006-1-alexghiti@rivosinc.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
This commit is contained in:
parent
1966db682f
commit
afedc3126e
@ -2,6 +2,12 @@ ifdef CONFIG_RELOCATABLE
|
|||||||
KBUILD_CFLAGS += -fno-pie
|
KBUILD_CFLAGS += -fno-pie
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifdef CONFIG_RISCV_ALTERNATIVE_EARLY
|
||||||
|
ifdef CONFIG_FORTIFY_SOURCE
|
||||||
|
KBUILD_CFLAGS += -D__NO_FORTIFY
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
obj-$(CONFIG_ERRATA_ANDES) += andes/
|
obj-$(CONFIG_ERRATA_ANDES) += andes/
|
||||||
obj-$(CONFIG_ERRATA_SIFIVE) += sifive/
|
obj-$(CONFIG_ERRATA_SIFIVE) += sifive/
|
||||||
obj-$(CONFIG_ERRATA_THEAD) += thead/
|
obj-$(CONFIG_ERRATA_THEAD) += thead/
|
||||||
|
@ -36,6 +36,11 @@ KASAN_SANITIZE_alternative.o := n
|
|||||||
KASAN_SANITIZE_cpufeature.o := n
|
KASAN_SANITIZE_cpufeature.o := n
|
||||||
KASAN_SANITIZE_sbi_ecall.o := n
|
KASAN_SANITIZE_sbi_ecall.o := n
|
||||||
endif
|
endif
|
||||||
|
ifdef CONFIG_FORTIFY_SOURCE
|
||||||
|
CFLAGS_alternative.o += -D__NO_FORTIFY
|
||||||
|
CFLAGS_cpufeature.o += -D__NO_FORTIFY
|
||||||
|
CFLAGS_sbi_ecall.o += -D__NO_FORTIFY
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
extra-y += vmlinux.lds
|
extra-y += vmlinux.lds
|
||||||
|
@ -16,8 +16,12 @@ KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_LTO), $(KBUILD_CFLAGS))
|
|||||||
KBUILD_CFLAGS += -mcmodel=medany
|
KBUILD_CFLAGS += -mcmodel=medany
|
||||||
|
|
||||||
CFLAGS_cmdline_early.o += -D__NO_FORTIFY
|
CFLAGS_cmdline_early.o += -D__NO_FORTIFY
|
||||||
CFLAGS_lib-fdt_ro.o += -D__NO_FORTIFY
|
|
||||||
CFLAGS_fdt_early.o += -D__NO_FORTIFY
|
CFLAGS_fdt_early.o += -D__NO_FORTIFY
|
||||||
|
# lib/string.c already defines __NO_FORTIFY
|
||||||
|
CFLAGS_ctype.o += -D__NO_FORTIFY
|
||||||
|
CFLAGS_lib-fdt.o += -D__NO_FORTIFY
|
||||||
|
CFLAGS_lib-fdt_ro.o += -D__NO_FORTIFY
|
||||||
|
CFLAGS_archrandom_early.o += -D__NO_FORTIFY
|
||||||
|
|
||||||
$(obj)/%.pi.o: OBJCOPYFLAGS := --prefix-symbols=__pi_ \
|
$(obj)/%.pi.o: OBJCOPYFLAGS := --prefix-symbols=__pi_ \
|
||||||
--remove-section=.note.gnu.property \
|
--remove-section=.note.gnu.property \
|
||||||
|
Loading…
Reference in New Issue
Block a user