Re: next-20190722, imx25: Oops when loading a module

From: Jessica Yu
Date: Mon Jul 22 2019 - 12:13:18 EST


+++ Martin Kaiser [22/07/19 12:13 +0200]:
Dear all,

I run next-20190722 on an arm imx25 system and came across an issue that might
be worth reporting. I am no sure to whom, though. Please let me know if I got
that wrong.

Loading a module, no matter which one, causes a segfault and a dump such as

[root@host ]# insmod /mnt/kernel/iio/potentiometer/max5432.ko
[ 63.043683] Internal error: Oops - undefined instruction: 0 [#1] ARM
[ 63.050123] Modules linked in:
[ 63.053266] CPU: 0 PID: 170 Comm: insmod Tainted: G W 5.3.0-rc1-next-20190722+ #3104
[ 63.062344] Hardware name: Freescale i.MX25 (Device Tree Support)
[ 63.068529] PC is at frob_text.constprop.15+0x2c/0x40
[ 63.073639] LR is at load_module+0x10dc/0x125c
[ 63.078115] pc : [<c0072ffc>] lr : [<c0071f8c>] psr: 00000013
[ 63.084407] sp : d3303e30 ip : d3303e40 fp : d3303e3c
[ 63.089654] r10: 00000000 r9 : d3303e98 r8 : 00000018
[ 63.094903] r7 : 00000001 r6 : bf0006cc r5 : d3303f20 r4 : bf0006c0
[ 63.101454] r3 : bf000000 r2 : 18000000 r1 : 00000180 r0 : bf0007a0
[ 63.108013] Flags: nzcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
[ 63.115176] Control: 0005317f Table: 93330000 DAC: 00000051
[ 63.120961] Process insmod (pid: 170, stack limit = 0x90da5324)
[ 63.126917] Stack: (0xd3303e30 to 0xd3304000)
[ 63.131318] 3e20: d3303f0c d3303e40 c0071f8c c0072fe0
[ 63.139546] 3e40: bf0006c0 d3309920 00002cc0 ffffffff 00000002 00000002 d3309900 00000000
[ 63.147776] 3e60: 001a77e2 bf00289b bf0008a0 c067c9c8 0000025f c07df990 d3303ecc d3303e88
[ 63.155999] 3e80: c00d7688 c00d689c 00000000 00000000 00000000 00000000 00000000 00000000
[ 63.164225] 3ea0: 6e72656b 00006c65 00000000 00000000 00000000 00000000 00000000 00000000
[ 63.172453] 3ec0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ba520d2b
[ 63.180681] 3ee0: c00721a8 00001aed 0120abad 00000000 c0883028 d4c17aed 001a77e2 d3302000
[ 63.188912] 3f00: d3303fa4 d3303f10 c0072270 c0070ec0 c0034324 c0677478 d32f1640 00000051
[ 63.197142] 3f20: d4c16788 d4c16a80 d4c16000 00001aed d4c16dd8 d4c16cd5 d4c177f0 000008a0
[ 63.205368] 3f40: 00000950 00000850 000009b4 00000000 00000000 00000000 00000840 0000001b
[ 63.213590] 3f60: 0000001c 00000011 0000000d 00000009 00000000 ba520d2b c01030f4 00000000
[ 63.221819] 3f80: 00000000 00001aed 00000080 c00091e4 d3302000 00000000 00000000 d3303fa8
[ 63.230046] 3fa0: c0009000 c007211c 00000000 00000000 012090c0 00001aed 001a77e2 00000000
[ 63.238273] 3fc0: 00000000 00000000 00001aed 00000080 00000001 be90de0c 001a77e2 00000000
[ 63.246499] 3fe0: be90dac0 be90dab0 0001ec34 00009b30 60000010 012090c0 00000000 00000000
[ 63.254694] Backtrace:
[ 63.257232] [<c0072fd0>] (frob_text.constprop.15) from [<c0071f8c>] (load_module+0x10dc/0x125c)
[ 63.265999] [<c0070eb0>] (load_module) from [<c0072270>] (sys_init_module+0x164/0x194)
[ 63.273970] r10:d3302000 r9:001a77e2 r8:d4c17aed r7:c0883028 r6:00000000 r5:0120abad
[ 63.281823] r4:00001aed
[ 63.284410] [<c007210c>] (sys_init_module) from [<c0009000>] (ret_fast_syscall+0x0/0x50)
[ 63.292529] Exception stack(0xd3303fa8 to 0xd3303ff0)
[ 63.297624] 3fa0: 00000000 00000000 012090c0 00001aed 001a77e2 00000000
[ 63.305851] 3fc0: 00000000 00000000 00001aed 00000080 00000001 be90de0c 001a77e2 00000000
[ 63.314067] 3fe0: be90dac0 be90dab0 0001ec34 00009b30
[ 63.319170] r10:00000000 r9:d3302000 r8:c00091e4 r7:00000080 r6:00001aed r5:00000000
[ 63.327021] r4:00000000
[ 63.329603] Code: 1a000002 e5901008 e1b02a01 0a000000 (e7f001f2)
[ 63.335742] ---[ end trace c38bbcd6af0938a2 ]---
Segmentation fault
[root@host ]#

It seems that this is realated to strict module rwx.
The config below crashes:

CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
# CONFIG_STRICT_MODULE_RWX is not set

If I enable CONFIG_STRICT_MODULE_RWX, modules can be loaded and unloaded without problems.

Best regards,

Martin

Hi Martin,

Thank you for reporting this. Could you please try the patch I posted here:

20190722161006.GA4297@linux-8ccs/">https://lore.kernel.org/lkml/20190722161006.GA4297@linux-8ccs/

And let me know if that fixes the issue for you?

Thanks,

Jessica