Re: [PATCH v2] mm: remove redundant lru_add_drain() prior to unmapping pages

From: kernel test robot
Date: Thu Dec 21 2023 - 23:01:58 EST




Hello,

kernel test robot noticed "kernel_BUG_at_mm/page_alloc.c" on:

commit: 5e3b1fa97b04faab8760b62ddab2cd2d62110400 ("[PATCH v2] mm: remove redundant lru_add_drain() prior to unmapping pages")
url: https://github.com/intel-lab-lkp/linux/commits/Jianfeng-Wang/mm-remove-redundant-lru_add_drain-prior-to-unmapping-pages/20231215-062828
base: v6.7-rc5
patch link: https://lore.kernel.org/all/20231214222717.50277-1-jianfeng.w.wang@xxxxxxxxxx/
patch subject: [PATCH v2] mm: remove redundant lru_add_drain() prior to unmapping pages

in testcase: trinity
version: trinity-i386-abe9de86-1_20230429
with following parameters:

runtime: 600s

test-description: Trinity is a linux system call fuzz tester.
test-url: http://codemonkey.org.uk/projects/trinity/


compiler: clang-16
test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G

(please refer to attached dmesg/kmsg for entire log/backtrace)


+--------------------------------------------------------------------------------------+----------+------------+
| | v6.7-rc5 | 5e3b1fa97b |
+--------------------------------------------------------------------------------------+----------+------------+
| kernel_BUG_at_mm/page_alloc.c | 0 | 10 |
| invalid_opcode:#[##] | 0 | 10 |
| EIP:free_unref_page_prepare | 0 | 10 |
+--------------------------------------------------------------------------------------+----------+------------+


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/202312221154.85f3c4a3-oliver.sang@xxxxxxxxx


[ 127.901286][ T2652] ------------[ cut here ]------------
[ 127.901579][ T2652] kernel BUG at mm/page_alloc.c:1084!
[ 127.901870][ T2652] invalid opcode: 0000 [#1] PREEMPT SMP
[ 127.902168][ T2652] CPU: 1 PID: 2652 Comm: trinity-c3 Tainted: G W N 6.7.0-rc5-00001-g5e3b1fa97b04 #1 e678fecaf3798641ec130c7b4b31f90b64a8d53d
[ 127.902921][ T2652] EIP: free_unref_page_prepare (mm/page_alloc.c:1084)
[ 127.903243][ T2652] Code: 8b 55 e4 b9 07 00 00 00 e8 a3 de ff ff 89 47 10 b0 01 83 c4 10 5e 5f 5b 5d 31 c9 31 d2 c3 89 f8 ba 4c 7c 68 c2 e8 86 76 fd ff <0f> 0b 68 c8 21 b2 c2 e8 8a f4 1f 00 0f 0b 0f a3 05 1c e4 c5 c2 0f
All code
========
0: 8b 55 e4 mov -0x1c(%rbp),%edx
3: b9 07 00 00 00 mov $0x7,%ecx
8: e8 a3 de ff ff call 0xffffffffffffdeb0
d: 89 47 10 mov %eax,0x10(%rdi)
10: b0 01 mov $0x1,%al
12: 83 c4 10 add $0x10,%esp
15: 5e pop %rsi
16: 5f pop %rdi
17: 5b pop %rbx
18: 5d pop %rbp
19: 31 c9 xor %ecx,%ecx
1b: 31 d2 xor %edx,%edx
1d: c3 ret
1e: 89 f8 mov %edi,%eax
20: ba 4c 7c 68 c2 mov $0xc2687c4c,%edx
25: e8 86 76 fd ff call 0xfffffffffffd76b0
2a:* 0f 0b ud2 <-- trapping instruction
2c: 68 c8 21 b2 c2 push $0xffffffffc2b221c8
31: e8 8a f4 1f 00 call 0x1ff4c0
36: 0f 0b ud2
38: 0f a3 05 1c e4 c5 c2 bt %eax,-0x3d3a1be4(%rip) # 0xffffffffc2c5e45b
3f: 0f .byte 0xf

Code starting with the faulting instruction
===========================================
0: 0f 0b ud2
2: 68 c8 21 b2 c2 push $0xffffffffc2b221c8
7: e8 8a f4 1f 00 call 0x1ff496
c: 0f 0b ud2
e: 0f a3 05 1c e4 c5 c2 bt %eax,-0x3d3a1be4(%rip) # 0xffffffffc2c5e431
15: 0f .byte 0xf
[ 127.904296][ T2652] EAX: 00000000 EBX: e869ad40 ECX: 00000000 EDX: 00000000
[ 127.904681][ T2652] ESI: 00000001 EDI: e869ad40 EBP: ed779b3b ESP: ed779b1f
[ 127.905066][ T2652] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 EFLAGS: 00010246
[ 127.905480][ T2652] CR0: 80050033 CR2: b69e1000 CR3: 2cd56000 CR4: 00040690
[ 127.905867][ T2652] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[ 127.906253][ T2652] DR6: fffe0ff0 DR7: 00000400
[ 127.906508][ T2652] Call Trace:
[ 127.906711][ T2652] ? fault_in_iov_iter_readable (lib/iov_iter.c:109)
[ 127.907028][ T2652] ? generic_perform_write (mm/filemap.c:?)
[ 127.907339][ T2652] ? shmem_file_write_iter (mm/shmem.c:?)
[ 127.907637][ T2652] ? do_iter_write (fs/read_write.c:736)
[ 127.907899][ T2652] ? vfs_writev (fs/read_write.c:933)
[ 127.908144][ T2652] ? do_writev (fs/read_write.c:976)
[ 127.908376][ T2652] ? __ia32_sys_writev (fs/read_write.c:1049 fs/read_write.c:1046 fs/read_write.c:1046)
[ 127.908644][ T2652] ? __do_fast_syscall_32 (arch/x86/entry/common.c:165)
[ 127.908927][ T2652] ? irqentry_exit_to_user_mode (kernel/entry/common.c:312)
[ 127.909235][ T2652] ? irqentry_exit (kernel/entry/common.c:445)
[ 127.909485][ T2652] ? do_fast_syscall_32 (arch/x86/entry/common.c:346)
[ 127.909757][ T2652] ? do_SYSENTER_32 (arch/x86/entry/common.c:384)
[ 127.910012][ T2652] ? entry_SYSENTER_32 (arch/x86/entry/entry_32.S:840)
[ 127.910282][ T2652] Modules linked in:
[ 127.910512][ T2652] ---[ end trace 0000000000000000 ]---
[ 127.910806][ T2652] EIP: free_unref_page_prepare (mm/page_alloc.c:1084)
[ 127.911140][ T2652] Code: 8b 55 e4 b9 07 00 00 00 e8 a3 de ff ff 89 47 10 b0 01 83 c4 10 5e 5f 5b 5d 31 c9 31 d2 c3 89 f8 ba 4c 7c 68 c2 e8 86 76 fd ff <0f> 0b 68 c8 21 b2 c2 e8 8a f4 1f 00 0f 0b 0f a3 05 1c e4 c5 c2 0f
All code
========
0: 8b 55 e4 mov -0x1c(%rbp),%edx
3: b9 07 00 00 00 mov $0x7,%ecx
8: e8 a3 de ff ff call 0xffffffffffffdeb0
d: 89 47 10 mov %eax,0x10(%rdi)
10: b0 01 mov $0x1,%al
12: 83 c4 10 add $0x10,%esp
15: 5e pop %rsi
16: 5f pop %rdi
17: 5b pop %rbx
18: 5d pop %rbp
19: 31 c9 xor %ecx,%ecx
1b: 31 d2 xor %edx,%edx
1d: c3 ret
1e: 89 f8 mov %edi,%eax
20: ba 4c 7c 68 c2 mov $0xc2687c4c,%edx
25: e8 86 76 fd ff call 0xfffffffffffd76b0
2a:* 0f 0b ud2 <-- trapping instruction
2c: 68 c8 21 b2 c2 push $0xffffffffc2b221c8
31: e8 8a f4 1f 00 call 0x1ff4c0
36: 0f 0b ud2
38: 0f a3 05 1c e4 c5 c2 bt %eax,-0x3d3a1be4(%rip) # 0xffffffffc2c5e45b
3f: 0f .byte 0xf

Code starting with the faulting instruction
===========================================
0: 0f 0b ud2
2: 68 c8 21 b2 c2 push $0xffffffffc2b221c8
7: e8 8a f4 1f 00 call 0x1ff496
c: 0f 0b ud2
e: 0f a3 05 1c e4 c5 c2 bt %eax,-0x3d3a1be4(%rip) # 0xffffffffc2c5e431
15: 0f .byte 0xf


The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20231222/202312221154.85f3c4a3-oliver.sang@xxxxxxxxx



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