[linus:master] [mm] cc92eba1c8: WARNING:at_kernel/rcu/tree_plugin.h:#__rcu_read_unlock

From: kernel test robot
Date: Sun May 26 2024 - 22:57:10 EST




Hello,

kernel test robot noticed "WARNING:at_kernel/rcu/tree_plugin.h:#__rcu_read_unlock" on:

commit: cc92eba1c88b1f74e0f044df2738f4e4b22f1e4e ("mm: fix non-compound multi-order memory accounting in __free_pages")
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git master

[test failed on linus/master 6d69b6c12fce479fde7bc06f686212451688a102]
[test failed on linux-next/master 3689b0ef08b70e4e03b82ebd37730a03a672853a]

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)



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/202405271029.6d2f9c4c-lkp@xxxxxxxxx


[ 2.504179][ C0] ------------[ cut here ]------------
[ 2.506222][ C0] WARNING: CPU: 0 PID: 1 at kernel/rcu/tree_plugin.h:431 __rcu_read_unlock (kernel/rcu/tree_plugin.h:431)
[ 2.508117][ C0] Modules linked in:
[ 2.509538][ C0] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.9.0-rc4-00080-gcc92eba1c88b #1 1899fb0438e1349d8761ad4016a94aaeaa8a37df
[ 2.512111][ C0] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
[ 2.518194][ C0] RIP: 0010:__rcu_read_unlock (kernel/rcu/tree_plugin.h:431)
[ 2.520109][ C0] Code: 00 00 41 83 3e 00 75 26 43 0f b6 04 3c 84 c0 75 5f 8b 03 3d 00 00 00 40 73 10 5b 41 5c 41 5d 41 5e 41 5f 5d c3 cc cc cc cc cc <0f> 0b eb ec e8 8d 00 00 00 eb d3 89 d9 80 e1 07 80 c1 03 38 c1 7c
All code
========
0: 00 00 add %al,(%rax)
2: 41 83 3e 00 cmpl $0x0,(%r14)
6: 75 26 jne 0x2e
8: 43 0f b6 04 3c movzbl (%r12,%r15,1),%eax
d: 84 c0 test %al,%al
f: 75 5f jne 0x70
11: 8b 03 mov (%rbx),%eax
13: 3d 00 00 00 40 cmp $0x40000000,%eax
18: 73 10 jae 0x2a
1a: 5b pop %rbx
1b: 41 5c pop %r12
1d: 41 5d pop %r13
1f: 41 5e pop %r14
21: 41 5f pop %r15
23: 5d pop %rbp
24: c3 ret
25: cc int3
26: cc int3
27: cc int3
28: cc int3
29: cc int3
2a:* 0f 0b ud2 <-- trapping instruction
2c: eb ec jmp 0x1a
2e: e8 8d 00 00 00 call 0xc0
33: eb d3 jmp 0x8
35: 89 d9 mov %ebx,%ecx
37: 80 e1 07 and $0x7,%cl
3a: 80 c1 03 add $0x3,%cl
3d: 38 c1 cmp %al,%cl
3f: 7c .byte 0x7c

Code starting with the faulting instruction
===========================================
0: 0f 0b ud2
2: eb ec jmp 0xfffffffffffffff0
4: e8 8d 00 00 00 call 0x96
9: eb d3 jmp 0xffffffffffffffde
b: 89 d9 mov %ebx,%ecx
d: 80 e1 07 and $0x7,%cl
10: 80 c1 03 add $0x3,%cl
13: 38 c1 cmp %al,%cl
15: 7c .byte 0x7c
[ 2.524112][ C0] RSP: 0000:ffff8883ae809db8 EFLAGS: 00010286
[ 2.526188][ C0] RAX: 00000000ffffffff RBX: ffff888100ac04ac RCX: dffffc0000000000
[ 2.528109][ C0] RDX: dffffc0000000000 RSI: 0000000000000008 RDI: ffff888100ac0040
[ 2.530810][ C0] RBP: 00000000ffffffff R08: ffffffff878bc007 R09: 1ffffffff0f17800
[ 2.532116][ C0] R10: dffffc0000000000 R11: fffffbfff0f17801 R12: 1ffff11020158095
[ 2.534888][ C0] R13: dffffc0000000000 R14: ffffea0004037400 R15: dffffc0000000000
[ 2.536108][ C0] FS: 0000000000000000(0000) GS:ffff8883ae800000(0000) knlGS:0000000000000000
[ 2.539082][ C0] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 2.540110][ C0] CR2: ffff88843ffff000 CR3: 00000000056ce000 CR4: 00000000000406f0
[ 2.542812][ C0] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 2.544109][ C0] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 2.546833][ C0] Call Trace:
[ 2.548013][ C0] <IRQ>
[ 2.548772][ C0] ? __warn (kernel/panic.c:240 kernel/panic.c:694)
[ 2.550219][ C0] ? __rcu_read_unlock (kernel/rcu/tree_plugin.h:431)
[ 2.551982][ C0] ? __rcu_read_unlock (kernel/rcu/tree_plugin.h:431)
[ 2.553266][ C0] ? report_bug (lib/bug.c:?)
[ 2.555068][ C0] ? handle_bug (arch/x86/kernel/traps.c:239)
[ 2.556133][ C0] ? exc_invalid_op (arch/x86/kernel/traps.c:260)
[ 2.557753][ C0] ? asm_exc_invalid_op (arch/x86/include/asm/idtentry.h:621)
[ 2.559780][ C0] ? __rcu_read_unlock (kernel/rcu/tree_plugin.h:431)
[ 2.561383][ C0] page_ext_put (include/linux/rcupdate.h:339 include/linux/rcupdate.h:814 mm/page_ext.c:537)
[ 2.562887][ C0] __free_pages (include/linux/page_ref.h:210 include/linux/mm.h:1135 mm/page_alloc.c:4669)
[ 2.564182][ C0] ? __pfx_thread_stack_free_rcu (kernel/fork.c:346)
[ 2.566080][ C0] ? rcu_core (kernel/rcu/tree.c:?)
[ 2.567681][ C0] rcu_core (include/linux/rcupdate.h:339 kernel/rcu/tree.c:2198 kernel/rcu/tree.c:2471)
[ 2.569661][ C0] __do_softirq (arch/x86/include/asm/jump_label.h:27 include/linux/jump_label.h:207 include/trace/events/irq.h:142 kernel/softirq.c:555)
[ 2.571612][ C0] ? __irq_exit_rcu (kernel/softirq.c:613 kernel/softirq.c:635)
[ 2.573327][ C0] __irq_exit_rcu (kernel/softirq.c:613 kernel/softirq.c:635)
[ 2.574888][ C0] irq_exit_rcu (kernel/softirq.c:647)
[ 2.576112][ C0] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1043)
[ 2.578091][ C0] </IRQ>
[ 2.579130][ C0] <TASK>
[ 2.580154][ C0] asm_sysvec_apic_timer_interrupt (arch/x86/include/asm/idtentry.h:702)
[ 2.582143][ C0] RIP: 0010:clear_page_rep (arch/x86/lib/clear_page_64.S:20)
[ 2.583920][ C0] Code: 1f 46 c0 fd e9 26 ff ff ff cc cc cc cc cc cc cc cc cc cc 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 b9 00 02 00 00 31 c0 <f3> 48 ab c3 cc cc cc cc 90 90 90 90 90 90 90 90 90 90 90 90 90 90
All code
========
0: 1f (bad)
1: 46 c0 fd e9 rex.RX sar $0xe9,%bpl
5: 26 ff es (bad)
7: ff (bad)
8: ff cc dec %esp
a: cc int3
b: cc int3
c: cc int3
d: cc int3
e: cc int3
f: cc int3
10: cc int3
11: cc int3
12: cc int3
13: 90 nop
14: 90 nop
15: 90 nop
16: 90 nop
17: 90 nop
18: 90 nop
19: 90 nop
1a: 90 nop
1b: 90 nop
1c: 90 nop
1d: 90 nop
1e: 90 nop
1f: 90 nop
20: 90 nop
21: 90 nop
22: 90 nop
23: b9 00 02 00 00 mov $0x200,%ecx
28: 31 c0 xor %eax,%eax
2a:* f3 48 ab rep stos %rax,%es:(%rdi) <-- trapping instruction
2d: c3 ret
2e: cc int3
2f: cc int3
30: cc int3
31: cc int3
32: 90 nop
33: 90 nop
34: 90 nop
35: 90 nop
36: 90 nop
37: 90 nop
38: 90 nop
39: 90 nop
3a: 90 nop
3b: 90 nop
3c: 90 nop
3d: 90 nop
3e: 90 nop
3f: 90 nop

Code starting with the faulting instruction
===========================================
0: f3 48 ab rep stos %rax,%es:(%rdi)
3: c3 ret
4: cc int3
5: cc int3
6: cc int3
7: cc int3
8: 90 nop
9: 90 nop
a: 90 nop
b: 90 nop
c: 90 nop
d: 90 nop
e: 90 nop
f: 90 nop
10: 90 nop
11: 90 nop
12: 90 nop
13: 90 nop
14: 90 nop
15: 90 nop


The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20240527/202405271029.6d2f9c4c-lkp@xxxxxxxxx



--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki