Hello, kernel test robot noticed "kernel_BUG_at_arch/x86/kernel/alternative.c" on: commit: 76743359658d730ecba565019069d870d30fe3b8 ("x86/ibt: Implement IBT+") https://git.kernel.org/cgit/linux/kernel/git/peterz/queue.git x86/ibt in testcase: boot compiler: clang-18 test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G (please refer to attached dmesg/kmsg for entire log/backtrace) +---------------------------------------------+------------+------------+ | | 89d02f5cc0 | 7674335965 | +---------------------------------------------+------------+------------+ | boot_successes | 18 | 0 | | boot_failures | 0 | 18 | | kernel_BUG_at_arch/x86/kernel/alternative.c | 0 | 18 | | Oops:invalid_opcode:#[##]PREEMPT_SMP_PTI | 0 | 18 | | RIP:apply_direct_call_offset | 0 | 18 | | Kernel_panic-not_syncing:Fatal_exception | 0 | 18 | +---------------------------------------------+------------+------------+ If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <oliver.sang@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-lkp/202409292243.b563a081-lkp@xxxxxxxxx [ 0.484790][ T0] ------------[ cut here ]------------ [ 0.485675][ T0] kernel BUG at arch/x86/kernel/alternative.c:302! [ 0.486640][ T0] Oops: invalid opcode: 0000 [#1] PREEMPT SMP PTI [ 0.487072][ T0] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.11.0-09968-g76743359658d #1 [ 0.487072][ T0] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 0.487072][ T0] RIP: 0010:apply_direct_call_offset (arch/x86/kernel/alternative.c:302) [ 0.487072][ T0] Code: 08 43 83 44 2e 01 04 eb df 83 f8 0f 75 0f 80 7c 24 19 8f 7f 17 43 83 44 2e 02 04 eb cb 3d eb 00 00 00 74 a7 eb 06 0f 0b eb be <0f> 0b 0f b6 54 24 52 48 c7 c7 75 6a 89 82 4c 89 e6 4c 89 e1 e8 0f All code ======== 0: 08 43 83 or %al,-0x7d(%rbx) 3: 44 rex.R 4: 2e 01 04 eb cs add %eax,(%rbx,%rbp,8) 8: df 83 f8 0f 75 0f filds 0xf750ff8(%rbx) e: 80 7c 24 19 8f cmpb $0x8f,0x19(%rsp) 13: 7f 17 jg 0x2c 15: 43 83 44 2e 02 04 addl $0x4,0x2(%r14,%r13,1) 1b: eb cb jmp 0xffffffffffffffe8 1d: 3d eb 00 00 00 cmp $0xeb,%eax 22: 74 a7 je 0xffffffffffffffcb 24: eb 06 jmp 0x2c 26: 0f 0b ud2 28: eb be jmp 0xffffffffffffffe8 2a:* 0f 0b ud2 <-- trapping instruction 2c: 0f b6 54 24 52 movzbl 0x52(%rsp),%edx 31: 48 c7 c7 75 6a 89 82 mov $0xffffffff82896a75,%rdi 38: 4c 89 e6 mov %r12,%rsi 3b: 4c 89 e1 mov %r12,%rcx 3e: e8 .byte 0xe8 3f: 0f .byte 0xf Code starting with the faulting instruction =========================================== 0: 0f 0b ud2 2: 0f b6 54 24 52 movzbl 0x52(%rsp),%edx 7: 48 c7 c7 75 6a 89 82 mov $0xffffffff82896a75,%rdi e: 4c 89 e6 mov %r12,%rsi 11: 4c 89 e1 mov %r12,%rcx 14: e8 .byte 0xe8 15: 0f .byte 0xf [ 0.487072][ T0] RSP: 0000:ffffffff82a03e58 EFLAGS: 00010297 [ 0.487072][ T0] RAX: 0000000000000082 RBX: ffffffff8380369c RCX: 0000000000000000 [ 0.487072][ T0] RDX: 0000000000000001 RSI: 0000000000000004 RDI: ffffffff81b4ea70 [ 0.487072][ T0] RBP: 0000000000000000 R08: 0000000000000001 R09: ffffffff82a03e58 [ 0.487072][ T0] R10: 000000000000000f R11: 0000000000000040 R12: ffffffff81b4e9f0 [ 0.487072][ T0] R13: fffffffffe353184 R14: ffffffff837fb86c R15: ffffffff82a03e58 [ 0.487072][ T0] FS: 0000000000000000(0000) GS:ffff88842fc00000(0000) knlGS:0000000000000000 [ 0.487072][ T0] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 0.487072][ T0] CR2: ffff88843ffff000 CR3: 0000000002a32000 CR4: 00000000000406f0 [ 0.487072][ T0] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 0.487072][ T0] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 0.487072][ T0] Call Trace: [ 0.487072][ T0] <TASK> [ 0.487072][ T0] ? __die_body (arch/x86/kernel/dumpstack.c:421) [ 0.487072][ T0] ? die (arch/x86/kernel/dumpstack.c:? arch/x86/kernel/dumpstack.c:447) [ 0.487072][ T0] ? do_trap (arch/x86/kernel/traps.c:196) [ 0.487072][ T0] ? apply_direct_call_offset (arch/x86/kernel/alternative.c:302) [ 0.487072][ T0] ? do_error_trap (arch/x86/kernel/traps.c:242) [ 0.487072][ T0] ? apply_direct_call_offset (arch/x86/kernel/alternative.c:302) [ 0.487072][ T0] ? handle_invalid_op (arch/x86/kernel/traps.c:279) [ 0.487072][ T0] ? apply_direct_call_offset (arch/x86/kernel/alternative.c:302) [ 0.487072][ T0] ? exc_invalid_op (arch/x86/kernel/traps.c:361) [ 0.487072][ T0] ? asm_exc_invalid_op (arch/x86/include/asm/idtentry.h:621) [ 0.487072][ T0] ? rtl8169_netpoll (drivers/net/ethernet/realtek/r8169_main.c:4847) [ 0.487072][ T0] ? __pfx_rtl8169_interrupt (drivers/net/ethernet/realtek/r8169_main.c:4650) [ 0.487072][ T0] ? apply_direct_call_offset (arch/x86/kernel/alternative.c:302) [ 0.487072][ T0] ? apply_direct_call_offset (arch/x86/kernel/alternative.c:889) [ 0.487072][ T0] ? rtl8169_netpoll (drivers/net/ethernet/realtek/r8169_main.c:4847) [ 0.487072][ T0] ? rtl8169_netpoll (drivers/net/ethernet/realtek/r8169_main.c:4847) [ 0.487072][ T0] ? rtl8169_netpoll (drivers/net/ethernet/realtek/r8169_main.c:4847) [ 0.487072][ T0] alternative_instructions (arch/x86/kernel/alternative.c:1821) [ 0.487072][ T0] arch_cpu_finalize_init (arch/x86/kernel/cpu/common.c:2397) [ 0.487072][ T0] start_kernel (init/main.c:1073) [ 0.487072][ T0] x86_64_start_reservations (??:?) [ 0.487072][ T0] x86_64_start_kernel (arch/x86/kernel/head64.c:437) [ 0.487072][ T0] common_startup_64 (arch/x86/kernel/head_64.S:421) [ 0.487072][ T0] </TASK> [ 0.487072][ T0] Modules linked in: [ 0.487076][ T0] ---[ end trace 0000000000000000 ]--- [ 0.487877][ T0] RIP: 0010:apply_direct_call_offset (arch/x86/kernel/alternative.c:302) [ 0.491321][ T0] Code: 08 43 83 44 2e 01 04 eb df 83 f8 0f 75 0f 80 7c 24 19 8f 7f 17 43 83 44 2e 02 04 eb cb 3d eb 00 00 00 74 a7 eb 06 0f 0b eb be <0f> 0b 0f b6 54 24 52 48 c7 c7 75 6a 89 82 4c 89 e6 4c 89 e1 e8 0f All code ======== 0: 08 43 83 or %al,-0x7d(%rbx) 3: 44 rex.R 4: 2e 01 04 eb cs add %eax,(%rbx,%rbp,8) 8: df 83 f8 0f 75 0f filds 0xf750ff8(%rbx) e: 80 7c 24 19 8f cmpb $0x8f,0x19(%rsp) 13: 7f 17 jg 0x2c 15: 43 83 44 2e 02 04 addl $0x4,0x2(%r14,%r13,1) 1b: eb cb jmp 0xffffffffffffffe8 1d: 3d eb 00 00 00 cmp $0xeb,%eax 22: 74 a7 je 0xffffffffffffffcb 24: eb 06 jmp 0x2c 26: 0f 0b ud2 28: eb be jmp 0xffffffffffffffe8 2a:* 0f 0b ud2 <-- trapping instruction 2c: 0f b6 54 24 52 movzbl 0x52(%rsp),%edx 31: 48 c7 c7 75 6a 89 82 mov $0xffffffff82896a75,%rdi 38: 4c 89 e6 mov %r12,%rsi 3b: 4c 89 e1 mov %r12,%rcx 3e: e8 .byte 0xe8 3f: 0f .byte 0xf Code starting with the faulting instruction =========================================== 0: 0f 0b ud2 2: 0f b6 54 24 52 movzbl 0x52(%rsp),%edx 7: 48 c7 c7 75 6a 89 82 mov $0xffffffff82896a75,%rdi e: 4c 89 e6 mov %r12,%rsi 11: 4c 89 e1 mov %r12,%rcx 14: e8 .byte 0xe8 15: 0f .byte 0xf The kernel config and materials to reproduce are available at: https://download.01.org/0day-ci/archive/20240929/202409292243.b563a081-lkp@xxxxxxxxx -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki