[+Cc rcu folks] On Fri, 21 Jun 2024 at 15:29, syzbot <syzbot+9bb7d0f2fdb4229b9...@syzkaller.appspotmail.com> wrote: > > Hello, > > syzbot found the following issue on: > > HEAD commit: 50736169ecc8 Merge tag 'for-6.10-rc4-tag' of git://git.ker.. > git tree: upstream > console output: https://syzkaller.appspot.com/x/log.txt?x=164ec02a980000 > kernel config: https://syzkaller.appspot.com/x/.config?x=704451bc2941bcb0 > dashboard link: https://syzkaller.appspot.com/bug?extid=9bb7d0f2fdb4229b9d67 > compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) > 2.40 > > Unfortunately, I don't have any reproducer for this issue yet. > > Downloadable assets: > disk image: > https://storage.googleapis.com/syzbot-assets/e4cbed12fec1/disk-50736169.raw.xz > vmlinux: > https://storage.googleapis.com/syzbot-assets/d50b5dcae4cd/vmlinux-50736169.xz > kernel image: > https://storage.googleapis.com/syzbot-assets/f2c14c5fcce2/bzImage-50736169.xz > > IMPORTANT: if you fix the issue, please add the following tag to the commit: > Reported-by: syzbot+9bb7d0f2fdb4229b9...@syzkaller.appspotmail.com > > ================================================================== > BUG: KCSAN: data-race in mtree_range_walk / rcu_segcblist_enqueue > > write to 0xffff888104077308 of 8 bytes by task 12265 on cpu 1: > rcu_segcblist_enqueue+0x67/0xb0 kernel/rcu/rcu_segcblist.c:345 > rcutree_enqueue kernel/rcu/tree.c:2940 [inline] > call_rcu_core kernel/rcu/tree.c:2957 [inline] > __call_rcu_common kernel/rcu/tree.c:3093 [inline] > call_rcu+0x1bd/0x430 kernel/rcu/tree.c:3176 > ma_free_rcu lib/maple_tree.c:197 [inline] > mas_free lib/maple_tree.c:1304 [inline] > mas_replace_node+0x2f8/0x440 lib/maple_tree.c:1741 > mas_wr_node_store lib/maple_tree.c:3956 [inline] > mas_wr_modify+0x2bc3/0x3c90 lib/maple_tree.c:4189 > mas_wr_store_entry+0x250/0x390 lib/maple_tree.c:4229 > mas_store_prealloc+0x151/0x2b0 lib/maple_tree.c:5485 > vma_iter_store mm/internal.h:1398 [inline] > vma_complete+0x3a7/0x760 mm/mmap.c:535 > __split_vma+0x623/0x690 mm/mmap.c:2440 > split_vma mm/mmap.c:2466 [inline] > vma_modify+0x198/0x1f0 mm/mmap.c:2507 > vma_modify_flags include/linux/mm.h:3347 [inline] > mprotect_fixup+0x335/0x610 mm/mprotect.c:637 > do_mprotect_pkey+0x673/0x9a0 mm/mprotect.c:820 > __do_sys_mprotect mm/mprotect.c:841 [inline] > __se_sys_mprotect mm/mprotect.c:838 [inline] > __x64_sys_mprotect+0x48/0x60 mm/mprotect.c:838 > x64_sys_call+0x26f5/0x2d70 arch/x86/include/generated/asm/syscalls_64.h:11 > do_syscall_x64 arch/x86/entry/common.c:52 [inline] > do_syscall_64+0xc9/0x1c0 arch/x86/entry/common.c:83 > entry_SYSCALL_64_after_hwframe+0x77/0x7f > > read to 0xffff888104077308 of 8 bytes by task 12266 on cpu 0: > mtree_range_walk+0x140/0x460 lib/maple_tree.c:2774 > mas_state_walk lib/maple_tree.c:3678 [inline] > mas_walk+0x16e/0x320 lib/maple_tree.c:4909 > lock_vma_under_rcu+0x84/0x260 mm/memory.c:5840 > do_user_addr_fault arch/x86/mm/fault.c:1329 [inline] > handle_page_fault arch/x86/mm/fault.c:1481 [inline] > exc_page_fault+0x150/0x650 arch/x86/mm/fault.c:1539 > asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:623 > > Reported by Kernel Concurrency Sanitizer on: > CPU: 0 PID: 12266 Comm: syz-executor.3 Not tainted > 6.10.0-rc4-syzkaller-00148-g50736169ecc8 #0 > Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS > Google 06/07/2024 > ==================================================================
This is not an ordinary data race. I suspect this to be an incorrect use of RCU, resulting in some kind of use-after-free / type-confusion. The access within rcu_segcblist_enqueue() is to maple_node::rcu (at offset 8 into maple_node). The racing access in mtree_range_walk() is to either maple_node::mr64::pivot[0] or maple_node::ma64::pivot[0] (both also offset 8 into maple_node).