linux/include
Ard Biesheuvel 080b6f4076 bpf: Don't rely on GCC __attribute__((optimize)) to disable GCSE
Commit 3193c0836 ("bpf: Disable GCC -fgcse optimization for
___bpf_prog_run()") introduced a __no_fgcse macro that expands to a
function scope __attribute__((optimize("-fno-gcse"))), to disable a
GCC specific optimization that was causing trouble on x86 builds, and
was not expected to have any positive effect in the first place.

However, as the GCC manual documents, __attribute__((optimize))
is not for production use, and results in all other optimization
options to be forgotten for the function in question. This can
cause all kinds of trouble, but in one particular reported case,
it causes -fno-asynchronous-unwind-tables to be disregarded,
resulting in .eh_frame info to be emitted for the function.

This reverts commit 3193c0836, and instead, it disables the -fgcse
optimization for the entire source file, but only when building for
X86 using GCC with CONFIG_BPF_JIT_ALWAYS_ON disabled. Note that the
original commit states that CONFIG_RETPOLINE=n triggers the issue,
whereas CONFIG_RETPOLINE=y performs better without the optimization,
so it is kept disabled in both cases.

Fixes: 3193c0836f ("bpf: Disable GCC -fgcse optimization for ___bpf_prog_run()")
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Link: https://lore.kernel.org/lkml/CAMuHMdUg0WJHEcq6to0-eODpXPOywLot6UD2=GFHpzoj_hCoBQ@mail.gmail.com/
Link: https://lore.kernel.org/bpf/20201028171506.15682-2-ardb@kernel.org
2020-10-29 20:01:46 -07:00
..
acpi pci-v5.10-changes 2020-10-22 12:41:00 -07:00
asm-generic Kbuild updates for v5.10 2020-10-22 13:13:57 -07:00
clocksource
crypto X.509: Fix modular build of public_key_sm2 2020-10-08 16:39:14 +11:00
drm sound updates for 5.10 2020-10-15 11:07:44 -07:00
dt-bindings This pull request contains zero diff to the core framework. It is a collection 2020-10-22 12:53:28 -07:00
keys
kunit linux-kselftest-kunit-5.10-rc1 2020-10-18 14:45:59 -07:00
kvm ARM: 2020-10-23 11:17:56 -07:00
linux bpf: Don't rely on GCC __attribute__((optimize)) to disable GCSE 2020-10-29 20:01:46 -07:00
math-emu
media Linux 5.9-rc7 2020-10-04 12:19:12 +02:00
memory
misc
net xsk: Fix possible memory leak at socket close 2020-10-29 15:19:56 +01:00
pcmcia
ras mm,hwpoison: introduce MF_MSG_UNSPLIT_THP 2020-10-16 11:11:17 -07:00
rdma RDMA: Explicitly pass in the dma_device to ib_register_device 2020-10-16 13:53:46 -03:00
scsi SCSI misc on 20201013 2020-10-14 15:15:35 -07:00
soc networking changes for the 5.10 merge window 2020-10-15 18:42:13 -07:00
sound ASoC: Updates for v5.10 2020-10-12 16:08:57 +02:00
target
trace ARM: 2020-10-23 11:17:56 -07:00
uapi Fixes for 5.10-rc1 from the networking tree: 2020-10-23 12:05:49 -07:00
vdso
video
xen xen: branch for v5.10-rc1b 2020-10-20 09:24:01 -07:00