summaryrefslogtreecommitdiff
path: root/arch/arm/kernel
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2026-04-25 07:44:26 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2026-04-25 07:44:26 -0700
commit129d6eb266e0848c9bf45da6e30291688c12b5ad (patch)
tree6709cec6768c96c3f7da2d248f7fdf9b55f62271 /arch/arm/kernel
parent27d128c1cff64c3b8012cc56dd5a1391bb4f1821 (diff)
parentc6e61c06d6061750597e79c598acb5dead44c35b (diff)
downloadlinux-next-129d6eb266e0848c9bf45da6e30291688c12b5ad.tar.gz
linux-next-129d6eb266e0848c9bf45da6e30291688c12b5ad.zip
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rmk/linux
Pull ARM updates from Russell King: - fix a race condition handling PG_dcache_clean - further cleanups for the fault handling, allowing RT to be enabled - fixing nzones validation in adfs filesystem driver - fix for module unwinding * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rmk/linux: ARM: 9463/1: Allow to enable RT ARM: 9472/1: fix race condition on PG_dcache_clean in __sync_icache_dcache() ARM: 9471/1: module: fix unwind section relocation out of range error fs/adfs: validate nzones in adfs_validate_bblk() ARM: provide individual is_translation_fault() and is_permission_fault() ARM: move FSR fault status definitions before fsr_fs() ARM: use BIT() and GENMASK() for fault status register fields ARM: move is_permission_fault() and is_translation_fault() to fault.h ARM: move vmalloc() lazy-page table population ARM: ensure interrupts are enabled in __do_user_fault()
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r--arch/arm/kernel/module-plts.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/kernel/module-plts.c b/arch/arm/kernel/module-plts.c
index 354ce16d83cb..b5338fe59706 100644
--- a/arch/arm/kernel/module-plts.c
+++ b/arch/arm/kernel/module-plts.c
@@ -225,6 +225,18 @@ int module_frob_arch_sections(Elf_Ehdr *ehdr, Elf_Shdr *sechdrs,
mod->arch.init.plt = s;
else if (s->sh_type == SHT_SYMTAB)
syms = (Elf32_Sym *)s->sh_addr;
+#if defined(CONFIG_ARM_UNWIND) && !defined(CONFIG_VMSPLIT_3G)
+ else if (s->sh_type == ELF_SECTION_UNWIND ||
+ (strncmp(".ARM.extab", secstrings + s->sh_name, 10) == 0)) {
+ /*
+ * To avoid the possible relocation out of range issue for
+ * R_ARM_PREL31, mark unwind section .ARM.extab and .ARM.exidx as
+ * executable so they will be allocated along with .text section to
+ * meet +/-1GB range requirement of the R_ARM_PREL31 relocation
+ */
+ s->sh_flags |= SHF_EXECINSTR;
+ }
+#endif
}
if (!mod->arch.core.plt || !mod->arch.init.plt) {