linux-xiaomi-chiron/arch/arm64/kernel
Jessica Yu e0328feda7 arm64/module: set trampoline section flags regardless of CONFIG_DYNAMIC_FTRACE
In the arm64 module linker script, the section .text.ftrace_trampoline
is specified unconditionally regardless of whether CONFIG_DYNAMIC_FTRACE
is enabled (this is simply due to the limitation that module linker
scripts are not preprocessed like the vmlinux one).

Normally, for .plt and .text.ftrace_trampoline, the section flags
present in the module binary wouldn't matter since module_frob_arch_sections()
would assign them manually anyway. However, the arm64 module loader only
sets the section flags for .text.ftrace_trampoline when CONFIG_DYNAMIC_FTRACE=y.
That's only become problematic recently due to a recent change in
binutils-2.35, where the .text.ftrace_trampoline section (along with the
.plt section) is now marked writable and executable (WAX).

We no longer allow writable and executable sections to be loaded due to
commit 5c3a7db0c7 ("module: Harden STRICT_MODULE_RWX"), so this is
causing all modules linked with binutils-2.35 to be rejected under arm64.
Drop the IS_ENABLED(CONFIG_DYNAMIC_FTRACE) check in module_frob_arch_sections()
so that the section flags for .text.ftrace_trampoline get properly set to
SHF_EXECINSTR|SHF_ALLOC, without SHF_WRITE.

Signed-off-by: Jessica Yu <jeyu@kernel.org>
Acked-by: Will Deacon <will@kernel.org>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Link: http://lore.kernel.org/r/20200831094651.GA16385@linux-8ccs
Link: https://lore.kernel.org/r/20200901160016.3646-1-jeyu@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2020-09-02 08:35:33 +01:00
..
probes vmalloc: fix the owner argument for the new __vmalloc_node_range callers 2020-07-03 16:15:25 -07:00
vdso arm64/vdso: Add time namespace page 2020-07-24 13:15:20 +01:00
vdso32 ARM64: vdso32: Install vdso32 from vdso_install 2020-08-21 19:11:44 +01:00
.gitignore
acpi.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
acpi_numa.c
acpi_parking_protocol.c
alternative.c arm64/alternatives: don't patch up internal branches 2020-07-09 14:57:59 +01:00
armv8_deprecated.c
asm-offsets.c KVM: arm64: Make struct kvm_regs userspace-only 2020-07-07 09:28:38 +01:00
cacheinfo.c
cpu-reset.h
cpu-reset.S
cpu_errata.c arm64: Allow booting of late CPUs affected by erratum 1418040 2020-08-21 11:39:56 +01:00
cpu_ops.c
cpufeature.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
cpuidle.c
cpuinfo.c arm64/cpuinfo: Remove unnecessary fallthrough annotation 2020-08-27 15:44:32 -05:00
crash_core.c arm64/crash_core: Export TCR_EL1.T1SZ in vmcoreinfo 2020-07-02 17:56:49 +01:00
crash_dump.c
debug-monitors.c arm64: Use test_tsk_thread_flag() for checking TIF_SINGLESTEP 2020-07-16 11:42:12 +01:00
efi-entry.S
efi-header.S
efi-rt-wrapper.S
efi.c
entry-common.c arm64: entry: Fix the typo in the comment of el1_dbg() 2020-07-08 21:44:40 +01:00
entry-fpsimd.S
entry-ftrace.S
entry.S arm64: Move handling of erratum 1418040 into C code 2020-08-21 11:39:56 +01:00
fpsimd.c arm64: sve: Fix build failure when ARM64_SVE=y and SYSCTL=n 2020-06-16 18:29:11 +01:00
ftrace.c arm64: ftrace: Change CONFIG_FTRACE_WITH_REGS to CONFIG_DYNAMIC_FTRACE_WITH_REGS 2020-06-08 15:44:59 +01:00
head.S mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
hibernate-asm.S
hibernate.c mm: consolidate pte_index() and pte_offset_*() definitions 2020-06-09 09:39:14 -07:00
hw_breakpoint.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
hyp-stub.S
image-vars.h KVM: arm64: Add kvm_extable for vaxorcism code 2020-08-28 15:23:42 +01:00
image.h
insn.c maccess: rename probe_kernel_{read,write} to copy_{from,to}_kernel_nofault 2020-06-17 10:57:41 -07:00
io.c
irq.c
jump_label.c
kaslr.c arm64: kaslr: Use standard early random function 2020-08-07 09:10:11 -07:00
kexec_image.c
kgdb.c arm64: kgdb: Fix single-step exception handling oops 2020-07-08 22:18:54 +01:00
kuser32.S
machine_kexec.c
machine_kexec_file.c arm64: kexec_file: Use struct_size() in kmalloc() 2020-06-18 10:45:20 +01:00
Makefile arm64: compat: Allow 32-bit vdso and sigpage to co-exist 2020-06-23 14:47:03 +01:00
module-plts.c arm64/module: set trampoline section flags regardless of CONFIG_DYNAMIC_FTRACE 2020-09-02 08:35:33 +01:00
module.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
module.lds
paravirt.c
pci.c
perf_callchain.c
perf_event.c arm64: perf: Expose some new events via sysfs 2020-07-21 12:59:42 +01:00
perf_regs.c arm64: perf: Report the PC value in REGS_ABI_32 mode 2020-06-25 14:47:04 +01:00
pointer_auth.c
process.c cpuidle: Move trace_cpu_idle() into generic code 2020-08-26 12:41:54 +02:00
psci.c
ptrace.c Merge branch 'work.regset' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2020-08-07 09:29:25 -07:00
reloc_test_core.c
reloc_test_syms.S
relocate_kernel.S
return_address.c
scs.c
sdei.c uaccess: add force_uaccess_{begin,end} helpers 2020-08-12 10:57:59 -07:00
setup.c arm64: Remove exporting cpu_logical_map symbol 2020-09-02 08:35:28 +01:00
signal.c arm64: ptrace: Consistently use pseudo-singlestep exceptions 2020-07-16 11:41:07 +01:00
signal32.c arm64: compat: Always use sigpage for sigreturn trampoline 2020-06-23 14:56:24 +01:00
sigreturn32.S
sleep.S
smccc-call.S
smp.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
smp_spin_table.c
ssbd.c
stacktrace.c arm64: stacktrace: Move export for save_stack_trace_tsk() 2020-07-14 19:16:25 +01:00
suspend.c mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
sys.c
sys32.c
sys_compat.c
syscall.c arm64: syscall: Expand the comment about ptrace and syscall(-1) 2020-07-16 11:41:58 +01:00
time.c
topology.c
trace-events-emulation.h
traps.c arm64: use IRQ_STACK_SIZE instead of THREAD_SIZE for irq stack 2020-07-31 18:05:36 +01:00
vdso.c arm64/vdso: Restrict splitting VVAR VMA 2020-07-24 18:06:52 +01:00
vmlinux.lds.S KVM: arm64: Add kvm_extable for vaxorcism code 2020-08-28 15:23:42 +01:00