lkml.org 
[lkml]   [2022]   [Feb]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
Subjectarm64 ftrace fixes for v5.4.y
Hi stable maintainers,

I recently ran into an issue where trying to load a module with jump
table entries crashes the system when function tracing is enabled. The
crash happens because ftrace is modifying the code and then marking it
as read-only too early. ftrace_make_call() calls module_enable_ro(mod,
true) before module init is over because ftrace_module_enable() calls
__ftrace_replace_code() which does FTRACE_UPDATE_MAKE_CALL. All this
code is gone now upstream but is still present on v5.4 stable kernels. I
picked this set of patches to v5.4 and it fixed it for me.

fbf6c73c5b26 ftrace: add ftrace_init_nop()
a1326b17ac03 module/ftrace: handle patchable-function-entry
bd8b21d3dd66 arm64: module: rework special section handling
f1a54ae9af0d arm64: module/ftrace: intialize PLT at load time

after doing that I ran into another issue because I'm using clang. Would
it be possible to pick two more patches to the stable tree to silence
this module warning from sysfs complaining about
/module/<modname>/sections/__patchable_function_entries being
duplicated?

dd2776222abb kbuild: lto: merge module sections
6a3193cdd5e5 kbuild: lto: Merge module sections if and only if
CONFIG_LTO_CLANG is enabled

All of these apply cleanly to v5.4.y stable branch.

Crash below.

Unable to handle kernel write to read-only memory at virtual address
ffffffd1b81fc0b0
Mem abort info:
ESR = 0x9600004f
EC = 0x25: DABT (current EL), IL = 32 bits
SET = 0, FnV = 0
EA = 0, S1PTW = 0
Data abort info:
ISV = 0, ISS = 0x0000004f
CM = 0, WnR = 1
swapper pgtable: 4k pages, 39-bit VAs, pgdp=0000000081bc1000
[ffffffd1b81fc0b0] pgd=0000000271858003, pud=0000000271858003,
pmd=0000000266c05003, pte=00600001f3f4df93
Internal error: Oops: 9600004f [#1] PREEMPT SMP
Modules linked in: vsock(+) <a bunch more modules>
CPU: 5 PID: 6254 Comm: modprobe Not tainted 5.4.177 #19
Hardware name: Google Lazor (rev3 - 8) with KB Backlight (DT)
pstate: 60400009 (nZCv daif +PAN -UAO)
pc : jump_label_swap+0x2c/0x68
lr : jump_label_swap+0x18/0x68
sp : ffffffc01946bb10
x29: ffffffc01946bb10 x28: 00000000000000b0
x27: 0000000000000010 x26: 00000000000000b0
x25: 00000000000001a0 x24: ffffffd1b81fc180
x23: ffffffd2036540fc x22: ffffffd1b81fc000
x21: 0000000000000010 x20: ffffffd1b81fc0b0
x19: ffffffd1b81fc180 x18: 0000000000000000
x17: ffffffd204006e08 x16: 0000000000006000
x15: ffffffd1b8209000 x14: 0066ba79a6ffffff
x13: 0000000000000004 x12: 000000004c55e4d8
x11: 00000000ffffd9f0 x10: 00000000ffffd754
x9 : ffffffffffffff30 x8 : 00000000ffffe2ec
x7 : fefefefefefefefe x6 : 00000000000341d5
x5 : ffffffd203654164 x4 : ffffffd2036540fc
x3 : 0000000000000000 x2 : ffffffc01946bb30
x1 : ffffffd203654110 x0 : 00000000fffffff0
Call trace:
jump_label_swap+0x2c/0x68
do_swap+0x98/0xa0
sort_r+0x178/0x1a0
sort+0x14/0x1c
jump_label_module_notify+0x7c/0x2c0
notifier_call_chain+0x58/0x90
__blocking_notifier_call_chain+0x58/0x84
blocking_notifier_call_chain+0x38/0x48
prepare_coming_module+0x30/0x3c
load_module+0xda4/0xf8c
__arm64_sys_finit_module+0xa4/0xdc
el0_svc_common+0xb4/0x17c
el0_svc_compat_handler+0x2c/0x58
el0_svc_compat+0x8/0x2c
Code: cb130289 29402e8a f940068c 4b090108 (b9000288)

\
 
 \ /
  Last update: 2022-02-18 02:29    [W:0.060 / U:0.788 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site