linux_dsm_epyc7002/arch/ia64/kernel
Sergei Trofimovich 1dc55c3a48 ia64: module: fix symbolizer crash on fdescr
[ Upstream commit 99e729bd40fb3272fa4b0140839d5e957b58588a ]

Noticed failure as a crash on ia64 when tried to symbolize all backtraces
collected by page_owner=on:

    $ cat /sys/kernel/debug/page_owner
    <oops>

    CPU: 1 PID: 2074 Comm: cat Not tainted 5.12.0-rc4 #226
    Hardware name: hp server rx3600, BIOS 04.03 04/08/2008
    ip is at dereference_module_function_descriptor+0x41/0x100

Crash happens at dereference_module_function_descriptor() due to
use-after-free when dereferencing ".opd" section header.

All section headers are already freed after module is laoded successfully.

To keep symbolizer working the change stores ".opd" address and size after
module is relocated to a new place and before section headers are
discarded.

To make similar errors less obscure module_finalize() now zeroes out all
variables relevant to module loading only.

Link: https://lkml.kernel.org/r/20210403074803.3309096-1-slyfox@gentoo.org
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-05-19 10:12:59 +02:00
..
syscalls mm/madvise: introduce process_madvise() syscall: an external memory hinting API 2020-10-18 09:27:10 -07:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
acpi-ext.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
acpi.c ACPI/sleep: Convert acpi_wakeup_address into a function 2019-12-10 10:15:48 +01:00
asm-offsets.c y2038: vdso: change timespec to __kernel_old_timespec 2019-11-15 14:38:28 +01:00
audit.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
brl_emu.c signal: Remove the task parameter from force_sig_fault 2019-05-29 09:31:43 -05:00
crash_dump.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
crash.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
cyclone.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
dma-mapping.c dma-mapping: split <linux/dma-mapping.h> 2020-10-06 07:07:03 +02:00
efi_stub.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
efi.c ia64: fix EFI_DEBUG build 2021-05-14 09:50:45 +02:00
elfcore.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
entry.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
entry.S ia64: enable HAVE_COPY_THREAD_TLS, switch to kernel_clone_args 2020-06-23 10:49:56 +02:00
err_inject.c ia64: fix format strings for err_inject 2021-04-10 13:36:10 +02:00
esi_stub.S treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
esi.c efi/ia64: Use existing helpers to locate ESI table 2020-02-23 21:59:42 +01:00
fsys.S docs: ia64: convert to ReST 2019-07-15 09:20:25 -03:00
fsyscall_gtod_data.h Stop ia64 being the last holdout using GENERIC_TIME_VSYSCALL_OLD 2017-11-13 12:15:40 -08:00
ftrace.c maccess: rename probe_kernel_{read,write} to copy_{from,to}_kernel_nofault 2020-06-17 10:57:41 -07:00
gate-data.S Rename .data.gate to .data..gate. 2010-03-03 11:25:59 +01:00
gate.lds.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
gate.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
head.S mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
ia64_ksyms.c ia64: fix min_low_pfn/max_low_pfn build errors 2020-09-01 19:34:11 +03:00
iosapic.c locking, arch/ia64: Reduce <asm/smp.h> header dependencies by moving XTP bits into the new <asm/xtp.h> header 2020-08-06 16:13:13 +02:00
irq_ia64.c ia64: Remove perfmon 2020-09-11 09:34:32 -07:00
irq_lsapic.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
irq.c locking, arch/ia64: Reduce <asm/smp.h> header dependencies by moving XTP bits into the new <asm/xtp.h> header 2020-08-06 16:13:13 +02:00
irq.h ia64: replace setup_irq() by request_irq() 2020-03-13 15:21:28 -07:00
ivt.S mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
kprobes.c ia64: kprobes: Use generic kretprobe trampoline handler 2020-09-08 11:52:33 +02:00
machine_kexec.c ia64: remove now unused machvec indirections 2019-08-16 11:33:57 -07:00
Makefile ia64: fix build error with !COREDUMP 2020-10-18 09:27:09 -07:00
Makefile.gate ia64: require -Wl,--hash-style=sysv 2019-05-18 11:29:01 +09:00
mca_asm.S mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
mca_drv_asm.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mca_drv.c ia64: remove support for machvecs 2019-08-16 14:32:26 -07:00
mca_drv.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mca.c ia64: mca: allocate early mca with GFP_ATOMIC 2021-04-10 13:36:09 +02:00
minstate.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
module.c ia64: module: fix symbolizer crash on fdescr 2021-05-19 10:12:59 +02:00
msi_ia64.c ia64: remove now unused machvec indirections 2019-08-16 11:33:57 -07:00
nr-irqs.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
numa.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
pal.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
palinfo.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
patch.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pci-dma.c ia64 for v5.4 - big change here is removal of support for SGI Altix 2019-09-16 15:32:01 -07:00
perfmon_default_smpl.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
perfmon_generic.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
perfmon_itanium.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
perfmon_mckinley.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
perfmon_montecito.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
process.c sched/idle: Fix arch_cpu_idle() vs tracing 2020-11-24 16:47:35 +01:00
ptrace.c ia64: fix ia64_syscall_get_set_arguments() for break-based syscalls 2021-03-30 14:31:52 +02:00
relocate_kernel.S mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
sal.c locking, arch/ia64: Reduce <asm/smp.h> header dependencies by moving XTP bits into the new <asm/xtp.h> header 2020-08-06 16:13:13 +02:00
salinfo.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
setup.c locking, arch/ia64: Reduce <asm/smp.h> header dependencies by moving XTP bits into the new <asm/xtp.h> header 2020-08-06 16:13:13 +02:00
sigframe.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
signal.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
smp.c A set of locking fixes and updates: 2020-08-10 19:07:44 -07:00
smpboot.c ia64: Remove perfmon 2020-09-11 09:34:32 -07:00
stacktrace.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sys_ia64.c ia64: remove CONFIG_PCI ifdefs 2019-08-16 11:33:57 -07:00
time.c ia64: replace setup_irq() by request_irq() 2020-03-13 15:21:28 -07:00
topology.c ia64: remove CONFIG_ACPI ifdefs 2019-08-16 11:33:57 -07:00
traps.c signal: Remove the task parameter from force_sig_fault 2019-05-29 09:31:43 -05:00
unaligned.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
uncached.c mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
unwind_decoder.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
unwind_i.h ia64: kernel: unwind_i.h: Replace zero-length array with flexible-array 2020-06-15 23:08:31 -05:00
unwind.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
vmlinux.lds.S vmlinux.lds.h: Split ELF_DETAILS from STABS_DEBUG 2020-09-01 09:50:35 +02:00