linux/arch/ia64/kernel
Sergei Trofimovich 99e729bd40 ia64: module: fix symbolizer crash on fdescr
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>
2021-04-30 11:20:35 -07:00
..
syscalls Kbuild updates for v5.13 2021-04-29 14:24:39 -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 ia64: ensure proper NUMA distance and possible map initialization 2021-04-30 11:20:34 -07:00
asm-offsets.c ia64: do not typedef struct pal_min_state_area_s 2021-02-12 05:11:19 +09:00
audit.c
brl_emu.c signal: Remove the task parameter from force_sig_fault 2019-05-29 09:31:43 -05:00
crash.c Kbuild updates for v5.12 2021-02-25 10:17:31 -08:00
crash_dump.c
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.c ia64: fix EFI_DEBUG build 2021-04-30 11:20:35 -07:00
efi_stub.S
elfcore.c
entry.h
entry.S ia64: syscalls: switch to generic syscalltbl.sh 2021-04-25 05:25:40 +09:00
err_inject.c ia64: fix format strings for err_inject 2021-03-25 09:22:55 -07:00
esi.c efi/ia64: Use existing helpers to locate ESI table 2020-02-23 21:59:42 +01:00
esi_stub.S treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
fsys.S arch/ia64/kernel/fsys.S: fix typos 2021-04-30 11:20:34 -07:00
fsyscall_gtod_data.h
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
gate.lds.S
gate.S
head.S ia64: drop unused IA64_FW_EMU ifdef 2021-04-30 11:20:35 -07: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.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
irq_ia64.c ia64: Remove perfmon 2020-09-11 09:34:32 -07:00
irq_lsapic.c
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: drop marked broken DISCONTIGMEM and VIRTUAL_MEM_MAP 2021-04-30 11:20:35 -07:00
Makefile ia64: drop marked broken DISCONTIGMEM and VIRTUAL_MEM_MAP 2021-04-30 11:20:35 -07:00
Makefile.gate ia64: require -Wl,--hash-style=sysv 2019-05-18 11:29:01 +09:00
mca.c ia64: mca: always make IA64_MCA_DEBUG an expression 2021-04-30 11:20:35 -07:00
mca_asm.S mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
mca_drv.c ia64: do not typedef struct pal_min_state_area_s 2021-02-12 05:11:19 +09:00
mca_drv.h
mca_drv_asm.S
minstate.h
module.c ia64: module: fix symbolizer crash on fdescr 2021-04-30 11:20:35 -07:00
msi_ia64.c ia64: remove now unused machvec indirections 2019-08-16 11:33:57 -07:00
numa.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
pal.S ia64: trivial spelling fixes 2021-04-30 11:20:35 -07:00
palinfo.c arch: ia64: Remove rest of perfmon support 2021-01-22 12:12:20 +05:30
patch.c
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_itanium.h arch: ia64: Remove rest of perfmon support 2021-01-22 12:12:20 +05:30
process.c arch: setup PF_IO_WORKER threads like PF_KTHREAD 2021-02-21 17:25:22 -07:00
ptrace.c ia64: fix ia64_syscall_get_set_arguments() for break-based syscalls 2021-03-13 11:27:31 -08: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
signal.c ia64: don't call handle_signal() unless there's actually a signal queued 2021-03-02 17:22:11 -07:00
smp.c A set of locking fixes and updates: 2020-08-10 19:07:44 -07:00
smpboot.c efi: ia64: move IA64-only declarations to new asm/efi.h header 2021-01-18 13:50:37 +01:00
stacktrace.c
sys_ia64.c ia64: remove CONFIG_PCI ifdefs 2019-08-16 11:33:57 -07:00
time.c EFI updates for v5.12 2021-02-20 19:09:26 -08: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 efi: ia64: move IA64-only declarations to new asm/efi.h header 2021-01-18 13:50:37 +01:00
unwind.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
unwind_decoder.c
unwind_i.h ia64: kernel: unwind_i.h: Replace zero-length array with flexible-array 2020-06-15 23:08:31 -05:00
vmlinux.lds.S vmlinux.lds.h: Split ELF_DETAILS from STABS_DEBUG 2020-09-01 09:50:35 +02:00