2021-06-23 02:13:48

by kernel test robot

[permalink] [raw]
Subject: [jump_label, x86] e7bf1ba97a: BUG:unable_to_handle_page_fault_for_address



Greeting,

FYI, we noticed the following commit (built with gcc-9):

commit: e7bf1ba97afdde75b0ef43e4bdb718bf843613f1 ("jump_label, x86: Emit short JMP")
https://git.kernel.org/cgit/linux/kernel/git/tip/tip.git objtool/core


in testcase: kernel-selftests
version: kernel-selftests-x86_64-7ae2585b-1_20210607
with following parameters:

group: group-01
ucode: 0xe2

test-description: The kernel contains a set of "self tests" under the tools/testing/selftests/ directory. These are intended to be small unit tests to exercise individual code paths in the kernel.
test-url: https://www.kernel.org/doc/Documentation/kselftest.txt


on test machine: 4 threads Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz with 32G memory

caused below changes (please refer to attached dmesg/kmsg for entire log/backtrace):



If you fix the issue, kindly add following tag
Reported-by: kernel test robot <[email protected]>


[ 222.094341] BUG: unable to handle page fault for address: ffffffff83ccffe0
[ 222.101155] #PF: supervisor read access in kernel mode
[ 222.106246] #PF: error_code(0x0000) - not-present page
[ 222.111336] PGD 81b429067 P4D 81b429067 PUD 81b42a063 PMD 81d3ff063 PTE 800ffff7e3f30062
[ 222.119351] Oops: 0000 [#1] PREEMPT SMP PTI
[ 222.123497] CPU: 2 PID: 5694 Comm: ftracetest Not tainted 5.13.0-rc1-00009-ge7bf1ba97afd #1
[ 222.131770] Hardware name: Dell Inc. OptiPlex 7040/0Y7WYT, BIOS 1.8.1 12/05/2017
[ 222.139095] RIP: 0010:insn_get_prefixes (kbuild/src/consumer/arch/x86/lib/insn.c:245)
[ 222.144459] Code: cc cc cc cc cc 0f 1f 44 00 00 41 55 31 c0 41 54 55 53 48 8b 57 68 48 89 fb 48 8b 77 60 48 8d 4a 01 eb 1b 0f b6 b8 e5 f9 48 82 <40> 38 3c 02 75 17 48 83 c0 01 48 83 f8 05 0f 84 e8 01 00 00 48 8d
All code
========
0: cc int3
1: cc int3
2: cc int3
3: cc int3
4: cc int3
5: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
a: 41 55 push %r13
c: 31 c0 xor %eax,%eax
e: 41 54 push %r12
10: 55 push %rbp
11: 53 push %rbx
12: 48 8b 57 68 mov 0x68(%rdi),%rdx
16: 48 89 fb mov %rdi,%rbx
19: 48 8b 77 60 mov 0x60(%rdi),%rsi
1d: 48 8d 4a 01 lea 0x1(%rdx),%rcx
21: eb 1b jmp 0x3e
23: 0f b6 b8 e5 f9 48 82 movzbl -0x7db7061b(%rax),%edi
2a:* 40 38 3c 02 cmp %dil,(%rdx,%rax,1) <-- trapping instruction
2e: 75 17 jne 0x47
30: 48 83 c0 01 add $0x1,%rax
34: 48 83 f8 05 cmp $0x5,%rax
38: 0f 84 e8 01 00 00 je 0x226
3e: 48 rex.W
3f: 8d .byte 0x8d

Code starting with the faulting instruction
===========================================
0: 40 38 3c 02 cmp %dil,(%rdx,%rax,1)
4: 75 17 jne 0x1d
6: 48 83 c0 01 add $0x1,%rax
a: 48 83 f8 05 cmp $0x5,%rax
e: 0f 84 e8 01 00 00 je 0x1fc
14: 48 rex.W
15: 8d .byte 0x8d
[ 222.163056] RSP: 0018:ffffc90002337ba8 EFLAGS: 00010202
[ 222.168230] RAX: 0000000000000000 RBX: ffffc90002337c50 RCX: ffffffff83ccffe1
[ 222.175299] RDX: ffffffff83ccffe0 RSI: ffffffff83ccffef RDI: 000000000000000f
[ 222.182367] RBP: ffffffff83ccffe0 R08: ffffc90002337c50 R09: 0000000000000001
[ 222.189432] R10: 0000000000000003 R11: ffffffffc05af000 R12: ffffffffc05af000
[ 222.196519] R13: ffffffffc05af000 R14: ffff8888135f8228 R15: 0000000000000000
[ 222.203587] FS: 00007f9114dab740(0000) GS:ffff88881dd00000(0000) knlGS:0000000000000000
[ 222.211605] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 222.217308] CR2: ffffffff83ccffe0 CR3: 00000008124fe006 CR4: 00000000003706e0
[ 222.224385] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 222.231465] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 222.238556] Call Trace:
[ 222.240982] ? mem_cgroup_swap_init (kbuild/src/consumer/arch/x86/include/asm/jump_label.h:25 kbuild/src/consumer/include/linux/memcontrol.h:613 kbuild/src/consumer/mm/memcontrol.c:7313)
[ 222.245211] ? 0xffffffffc05af000
[ 222.248495] ? 0xffffffffc05af000
[ 222.251777] insn_get_opcode (kbuild/src/consumer/arch/x86/lib/insn.c:272)
[ 222.255576] ? mem_cgroup_swap_init (kbuild/src/consumer/arch/x86/include/asm/jump_label.h:25 kbuild/src/consumer/include/linux/memcontrol.h:613 kbuild/src/consumer/mm/memcontrol.c:7313)
[ 222.259807] insn_get_modrm (kbuild/src/consumer/arch/x86/lib/insn.c:343)
[ 222.263522] ? mem_cgroup_swap_init (kbuild/src/consumer/arch/x86/include/asm/jump_label.h:25 kbuild/src/consumer/include/linux/memcontrol.h:613 kbuild/src/consumer/mm/memcontrol.c:7313)
[ 222.267750] insn_get_sib (kbuild/src/consumer/arch/x86/lib/insn.c:421)
[ 222.271209] insn_get_displacement (kbuild/src/consumer/arch/x86/lib/insn.c:464)
[ 222.275527] insn_get_immediate (kbuild/src/consumer/arch/x86/lib/insn.c:632)
[ 222.279585] insn_get_length (kbuild/src/consumer/arch/x86/lib/insn.c:707)
[ 222.283298] insn_decode (kbuild/src/consumer/arch/x86/lib/insn.c:747)
[ 222.286668] arch_jump_entry_size (kbuild/src/consumer/arch/x86/kernel/jump_label.c:27)
[ 222.290815] ? mem_cgroup_swap_init (kbuild/src/consumer/arch/x86/include/asm/jump_label.h:25 kbuild/src/consumer/include/linux/memcontrol.h:613 kbuild/src/consumer/mm/memcontrol.c:7313)
[ 222.295045] ? mem_cgroup_swap_init (kbuild/src/consumer/mm/memcontrol.c:7316)
[ 222.299362] ? mem_cgroup_swap_init (kbuild/src/consumer/arch/x86/include/asm/jump_label.h:25 kbuild/src/consumer/include/linux/memcontrol.h:613 kbuild/src/consumer/mm/memcontrol.c:7313)
[ 222.303592] jump_label_text_reserved (kbuild/src/consumer/kernel/jump_label.c:312 kbuild/src/consumer/kernel/jump_label.c:325 kbuild/src/consumer/kernel/jump_label.c:791)
[ 222.308170] register_kprobe (kbuild/src/consumer/kernel/kprobes.c:2052)
[ 222.312660] register_trace_kprobe (kbuild/src/consumer/kernel/trace/trace_kprobe.c:655)
[ 222.317063] __trace_kprobe_create (kbuild/src/consumer/kernel/trace/trace_kprobe.c:889)
[ 222.321468] ? register_trace_kprobe (kbuild/src/consumer/kernel/trace/trace_kprobe.c:715)
[ 222.326055] ? probes_profile_seq_show (kbuild/src/consumer/kernel/trace/trace_kprobe.c:922)
[ 222.330631] trace_probe_create (kbuild/src/consumer/kernel/trace/trace_probe.c:1148)
[ 222.334603] create_or_delete_trace_kprobe (kbuild/src/consumer/kernel/trace/trace_kprobe.c:926)
[ 222.339527] trace_parse_run_command (kbuild/src/consumer/kernel/trace/trace.c:9778)
[ 222.344017] vfs_write (kbuild/src/consumer/fs/read_write.c:603)
[ 222.347303] ksys_write (kbuild/src/consumer/fs/read_write.c:658)
[ 222.350672] do_syscall_64 (kbuild/src/consumer/arch/x86/entry/common.c:47)
[ 222.354213] entry_SYSCALL_64_after_hwframe (kbuild/src/consumer/arch/x86/entry/entry_64.S:112)
[ 222.359217] RIP: 0033:0x7f9114e98504
[ 222.362758] Code: 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b3 0f 1f 80 00 00 00 00 48 8d 05 f9 61 0d 00 8b 00 85 c0 75 13 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 41 54 49 89 d4 55 48 89 f5 53
All code
========
0: 00 f7 add %dh,%bh
2: d8 64 89 02 fsubs 0x2(%rcx,%rcx,4)
6: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax
d: eb b3 jmp 0xffffffffffffffc2
f: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
16: 48 8d 05 f9 61 0d 00 lea 0xd61f9(%rip),%rax # 0xd6216
1d: 8b 00 mov (%rax),%eax
1f: 85 c0 test %eax,%eax
21: 75 13 jne 0x36
23: b8 01 00 00 00 mov $0x1,%eax
28: 0f 05 syscall
2a:* 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax <-- trapping instruction
30: 77 54 ja 0x86
32: c3 retq
33: 0f 1f 00 nopl (%rax)
36: 41 54 push %r12
38: 49 89 d4 mov %rdx,%r12
3b: 55 push %rbp
3c: 48 89 f5 mov %rsi,%rbp
3f: 53 push %rbx

Code starting with the faulting instruction
===========================================
0: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax
6: 77 54 ja 0x5c
8: c3 retq
9: 0f 1f 00 nopl (%rax)
c: 41 54 push %r12
e: 49 89 d4 mov %rdx,%r12
11: 55 push %rbp
12: 48 89 f5 mov %rsi,%rbp
15: 53 push %rbx


To reproduce:

git clone https://github.com/intel/lkp-tests.git
cd lkp-tests
bin/lkp install job.yaml # job file is attached in this email
bin/lkp split-job --compatible job.yaml # generate the yaml file for lkp run
bin/lkp run generated-yaml-file



---
0DAY/LKP+ Test Infrastructure Open Source Technology Center
https://lists.01.org/hyperkitty/list/[email protected] Intel Corporation

Thanks,
Oliver Sang


Attachments:
(No filename) (9.21 kB)
config-5.13.0-rc1-00009-ge7bf1ba97afd (177.60 kB)
job-script (7.16 kB)
dmesg.xz (30.01 kB)
job.yaml (6.15 kB)
Download all attachments