Re: [PATCH modules 0/2] Fix handling of exit unwinding sections (on ARM)

From: Jessica Yu
Date: Thu Jun 06 2019 - 11:25:44 EST

+++ Matthias Schiffer [06/06/19 10:14 +0200]:
On Mon, 2019-06-03 at 12:57 +0200, Matthias Schiffer wrote:
For some time (050d18d1c651 "ARM: 8650/1: module: handle negative
R_ARM_PREL31 addends correctly", v4.11+), building a kernel without
CONFIG_MODULE_UNLOAD would lead to module loads failing on ARM
systems with
certain memory layouts, with messages like:

imx_sdma: section 16 reloc 0 sym '': relocation 42 out of range
(0x7f015260 -> 0xc0f5a5e8)

(0x7f015260 is in the module load area, 0xc0f5a5e8 a regular vmalloc
address; relocation 42 is R_ARM_PREL31)

This is caused by relocatiosn in the .ARM.extab.exit.text and
.ARM.exidx.exit.text sections referencing the .exit.text section. As
module loader will omit loading .exit.text without
there will be relocations from loaded to unloaded sections; the
huge offsets trigger the sanity checks added in 050d18d1c651.

IA64 might be affected by a similar issue - sections with names like
.IA_64.unwind.exit.text and .IA_64.unwind_info.exit.text appear in
the ld
script - but I don't know much about that arch.

Also, I'm not sure if this is stable-worthy - just enabling
CONFIG_MODULE_UNLOAD should be a viable workaround on affected

Kind regards,

any comments on these patches? If not, who is going to take them in
their tree?

I don't mind either way. I can take the patches through my tree if
Russell ack's the second one (after comments have been addressed).