linux/arch/powerpc/kernel
Ard Biesheuvel a7223f5bfc powerpc: Avoid broken GCC __attribute__((optimize))
Commit 7053f80d96 ("powerpc/64: Prevent stack protection in early
boot") introduced a couple of uses of __attribute__((optimize)) with
function scope, to disable the stack protector in some early boot
code.

Unfortunately, and this is documented in the GCC man pages [0],
overriding function attributes for optimization is broken, and is only
supported for debug scenarios, not for production: the problem appears
to be that setting GCC -f flags using this method will cause it to
forget about some or all other optimization settings that have been
applied.

So the only safe way to disable the stack protector is to disable it
for the entire source file.

[0] https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html

Fixes: 7053f80d96 ("powerpc/64: Prevent stack protection in early boot")
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
[mpe: Drop one remaining use of __nostackprotector, reported by snowpatch]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20201028080433.26799-1-ardb@kernel.org
2020-11-19 14:50:14 +11:00
..
ptrace powerpc/watchpoint/ptrace: Introduce PPC_DEBUG_FEATURE_DATA_BP_ARCH_31 2020-09-15 22:13:20 +10:00
syscalls mm/madvise: introduce process_madvise() syscall: an external memory hinting API 2020-10-18 09:27:10 -07:00
trace powerpc: Add a ppc_inst_as_str() helper 2020-07-23 17:41:36 +10:00
vdso32 Kbuild updates for v5.10 2020-10-22 13:13:57 -07:00
vdso64 Kbuild updates for v5.10 2020-10-22 13:13:57 -07:00
.gitignore
align.c powerpc: Use fallthrough pseudo-keyword 2020-07-29 21:09:37 +10:00
asm-offsets.c powerpc/tm: Save and restore AMR on treclaim and trechkpt 2020-10-06 23:22:25 +11:00
audit.c
btext.c treewide: Convert macro and uses of __section(foo) to __section("foo") 2020-10-25 14:51:49 -07:00
cacheinfo.c powerpc/cacheinfo: Warn if cache object chain becomes unordered 2020-07-30 22:53:48 +10:00
cacheinfo.h
compat_audit.c
cpu_setup_6xx.S powerpc/32: Blacklist functions running with MMU disabled for kprobe 2020-06-02 20:59:11 +10:00
cpu_setup_44x.S
cpu_setup_fsl_booke.S
cpu_setup_pa6t.S
cpu_setup_power.c powerpc/64s: Convert some cpu_setup() and cpu_restore() functions to C 2020-11-19 14:49:56 +11:00
cpu_setup_ppc970.S
cputable.c powerpc/64s: Convert some cpu_setup() and cpu_restore() functions to C 2020-11-19 14:49:56 +11:00
crash_dump.c
dawr.c powerpc/watchpoint: Guest support for 2nd DAWR hcall 2020-07-26 23:34:19 +10:00
dbell.c powerpc: Inline doorbell sending functions 2020-07-29 21:02:09 +10:00
dma-iommu.c dma-mapping: add a new dma_alloc_pages API 2020-09-25 06:20:47 +02:00
dma-mask.c
dma-swiotlb.c
dt_cpu_ftrs.c powerpc: untangle cputable mce include 2020-10-06 23:22:22 +11:00
early_32.c
eeh.c powerpc/eeh: Fix eeh_dev_check_failure() for PE#0 2020-10-22 10:38:53 +11:00
eeh_cache.c
eeh_driver.c pci-v5.9-changes 2020-08-07 18:48:15 -07:00
eeh_event.c
eeh_pe.c powerpc/eeh: Delete eeh_pe->config_addr 2020-10-07 22:34:47 +11:00
eeh_sysfs.c powerpc/eeh: Pass eeh_dev to eeh_ops->resume_notify() 2020-07-26 23:34:20 +10:00
entry_32.S powerpc: Remove support for PowerPC 601 2020-10-08 21:17:13 +11:00
entry_64.S powerpc/security: Fix link stack flush instruction 2020-10-08 12:50:52 +11:00
epapr_hcalls.S
epapr_paravirt.c
exceptions-64e.S powerpc/64e: remove 64s specific interrupt soft-mask code 2020-10-06 23:22:23 +11:00
exceptions-64s.S powerpc updates for 5.9 2020-08-07 10:33:50 -07:00
fadump.c powerpc updates for 5.10 2020-10-16 12:21:15 -07:00
firmware.c powerpc/pseries: Add KVM guest doorbell restrictions 2020-07-29 21:02:10 +10:00
fpu.S powerpc: Drop SYNC_601() ISYNC_601() and SYNC() 2020-10-08 21:17:13 +11:00
fsl_booke_entry_mapping.S
head_8xx.S mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
head_32.h powerpc: Drop SYNC_601() ISYNC_601() and SYNC() 2020-10-08 21:17:13 +11:00
head_40x.S powerpc: Remove SYNC on non 6xx 2020-10-08 21:17:12 +11:00
head_44x.S mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
head_64.S powerpc/64: Set up a kernel stack for secondaries before cpu_restore() 2020-11-02 12:54:38 +11:00
head_book3s_32.S powerpc/32s: Remove #ifdef CONFIG_PPC_BOOK3S_32 in head_book3s_32.S 2020-10-08 21:17:15 +11:00
head_booke.h powerpc: Remove SYNC on non 6xx 2020-10-08 21:17:12 +11:00
head_fsl_booke.S mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
hw_breakpoint.c powerpc/watchpoint: Move DAWR detection logic outside of hw_breakpoint.c 2020-09-15 22:13:19 +10:00
hw_breakpoint_constraints.c powerpc/watchpoint: Move DAWR detection logic outside of hw_breakpoint.c 2020-09-15 22:13:19 +10:00
idle.c powerpc: Move arch_cpu_idle_dead() into smp.c 2020-09-18 19:59:43 +10:00
idle_6xx.S powerpc/32: Blacklist functions running with MMU disabled for kprobe 2020-06-02 20:59:11 +10:00
idle_book3e.S
idle_book3s.S
idle_e500.S powerpc/32: Blacklist functions running with MMU disabled for kprobe 2020-06-02 20:59:11 +10:00
ima_arch.c
io-workarounds.c mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
io.c
iomap.c iomap: constify ioreadX() iomem argument (as in generic implementation) 2020-08-14 19:56:57 -07:00
iommu.c dma-mapping: introduce dma_get_seg_boundary_nr_pages() 2020-09-03 18:12:15 +02:00
irq.c powerpc: Remove get_tb_or_rtc() 2020-10-08 21:17:14 +11:00
isa-bridge.c powerpc: remove __ioremap_at and __iounmap_at 2020-06-02 10:59:10 -07:00
jump_label.c
kgdb.c maccess: make get_kernel_nofault() check for minimal type compatibility 2020-06-18 12:10:37 -07:00
kprobes-ftrace.c
kprobes.c powerpc: kprobes: Use generic kretprobe trampoline handler 2020-09-08 11:52:34 +02:00
kvm.c
kvm_emul.S
l2cr_6xx.S powerpc: Drop SYNC_601() ISYNC_601() and SYNC() 2020-10-08 21:17:13 +11:00
legacy_serial.c
Makefile powerpc: Avoid broken GCC __attribute__((optimize)) 2020-11-19 14:50:14 +11:00
mce.c powerpc/mce: Avoid nmi_enter/exit in real mode on pseries hash 2020-10-16 20:13:55 +11:00
mce_power.c powerpc/powernv: Machine check handler for POWER10 2020-07-23 17:43:30 +10:00
misc.S powerpc/32: Blacklist functions running with MMU disabled for kprobe 2020-06-02 20:59:11 +10:00
misc_32.S powerpc: Rewrite FSL_BOOKE flush_cache_instruction() in C 2020-09-02 11:00:21 +10:00
misc_64.S powerpc: Remove SYNC on non 6xx 2020-10-08 21:17:12 +11:00
module.c powerpc: Use MODULES_VADDR if defined 2020-07-27 00:01:30 +10:00
module_32.c
module_64.c maccess: rename probe_kernel_{read,write} to copy_{from,to}_kernel_nofault 2020-06-17 10:57:41 -07:00
msi.c
note.S
nvram_64.c powerpc updates for 5.8 2020-06-05 12:39:30 -07:00
of_platform.c powerpc/eeh: Remove eeh_dev_phb_init_dynamic() 2020-07-26 23:34:19 +10:00
optprobes.c powerpc: Add ppc_inst_as_u64() 2020-05-26 23:36:57 +10:00
optprobes_head.S
paca.c powerpc: Avoid broken GCC __attribute__((optimize)) 2020-11-19 14:50:14 +11:00
pci-common.c Revert "powerpc/pci: unmap legacy INTx interrupts when a PHB is removed" 2020-10-15 13:42:49 +11:00
pci-hotplug.c
pci_32.c
pci_64.c powerpc updates for 5.8 2020-06-05 12:39:30 -07:00
pci_dn.c powerpc/eeh: Rename eeh_{add_to|remove_from}_parent_pe() 2020-07-26 23:34:21 +10:00
pci_of_scan.c
pmc.c
ppc32.h
ppc_save_regs.S
proc_powerpc.c
process.c powerpc/process: Fix uninitialised variable error 2020-09-18 18:12:46 +10:00
prom.c powerpc/mm/book3s: Split radix and hash MAX_PHYSMEM limit 2020-09-15 22:13:22 +10:00
prom_init.c treewide: Convert macro and uses of __section(foo) to __section("foo") 2020-10-25 14:51:49 -07:00
prom_init_check.sh
prom_parse.c
reloc_32.S
reloc_64.S
rtas-proc.c
rtas-rtc.c
rtas.c powerpc/rtas: Restrict RTAS requests from userspace 2020-10-06 23:22:27 +11:00
rtas_flash.c
rtas_pci.c mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
rtasd.c powerpc/rtasd: simplify handle_rtas_event(), emit message on events 2020-07-16 13:12:38 +10:00
secure_boot.c powerpc/pseries: Detect secure and trusted boot state of the system. 2020-07-16 14:49:53 +10:00
security.c powerpc/security: Fix link stack flush instruction 2020-10-08 12:50:52 +11:00
secvar-ops.c
secvar-sysfs.c
setup-common.c powerpc/64: Set up a kernel stack for secondaries before cpu_restore() 2020-11-02 12:54:38 +11:00
setup.h powerpc: Avoid broken GCC __attribute__((optimize)) 2020-11-19 14:50:14 +11:00
setup_32.c powerpc: Remove support for PowerPC 601 2020-10-08 21:17:13 +11:00
setup_64.c powerpc: Avoid broken GCC __attribute__((optimize)) 2020-11-19 14:50:14 +11:00
signal.c arch-cleanup-2020-10-22 2020-10-23 10:06:38 -07:00
signal.h
signal_32.c powerpc/signal_32: Simplify loop in PPC64 save_general_regs() 2020-07-15 12:04:40 +10:00
signal_64.c powerpc/signal64: Don't opencode page prefaulting 2020-07-15 12:04:40 +10:00
smp-tbsync.c
smp.c powerpc/smp: Use GFP_ATOMIC while allocating tmp mask 2020-10-19 21:32:34 +11:00
stacktrace.c kernel: rename show_stack_loglvl() => show_stack() 2020-06-09 09:39:13 -07:00
suspend.c
swsusp.c
swsusp_32.S powerpc/32: Blacklist functions running with MMU disabled for kprobe 2020-06-02 20:59:11 +10:00
swsusp_64.c
swsusp_asm64.S
swsusp_booke.S
sys_ppc32.c
syscall_64.c Merge branch 'scv' support into next 2020-07-23 17:43:44 +10:00
syscalls.c
sysfs.c powerpc/sysfs: Remove unused 'err' variable in sysfs_create_dscr_default() 2020-09-18 20:05:24 +10:00
systbl.S
systbl_chk.sh
tau_6xx.c powerpc/tau: Disable TAU between measurements 2020-09-15 22:13:30 +10:00
time.c powerpc/time: Avoid using get_tbl() and get_tbu() internally 2020-10-08 21:17:15 +11:00
tm.S powerpc/tm: Save and restore AMR on treclaim and trechkpt 2020-10-06 23:22:25 +11:00
traps.c powerpc: Fix undetected data corruption with P9N DD2.1 VSX CI load emulation 2020-10-20 07:59:21 +11:00
ucall.S
udbg.c
udbg_16550.c
uprobes.c powerpc: Add ppc_inst_next() 2020-05-26 23:36:51 +10:00
vdso.c powerpc/vdso: Fix vdso cpu truncation 2020-07-16 13:12:47 +10:00
vecemu.c
vector.S powerpc: re-initialise lazy FPU/VEC counters on every fault 2020-07-16 13:00:24 +10:00
vmlinux.lds.S vmlinux.lds.h: Split ELF_DETAILS from STABS_DEBUG 2020-09-01 09:50:35 +02:00
watchdog.c