Re: [syzbot] [btrfs?] kernel BUG in prepare_to_merge

From: Aleksandr Nogikh
Date: Tue Aug 01 2023 - 10:37:49 EST


On Mon, Jul 31, 2023 at 8:26 AM Qu Wenruo <quwenruo.btrfs@xxxxxxx> wrote:
>
>
>
> On 2023/7/31 13:11, Qu Wenruo wrote:
> >
> >
> > On 2023/7/31 01:07, syzbot wrote:
> >> syzbot has found a reproducer for the following issue on:
> >>
> >> HEAD commit: d31e3792919e Merge tag '6.5-rc3-smb3-client-fixes' of
> >> git:..
> >> git tree: upstream
> >> console output: https://syzkaller.appspot.com/x/log.txt?x=17afd745a80000
> >> kernel config:
> >> https://syzkaller.appspot.com/x/.config?x=9d670a4f6850b6f4
> >> dashboard link:
> >> https://syzkaller.appspot.com/bug?extid=ae97a827ae1c3336bbb4
> >> compiler: gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils
> >> for Debian) 2.40
> >> syz repro:
> >> https://syzkaller.appspot.com/x/repro.syz?x=15278939a80000
> >> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=14dd3f31a80000
> >>
> >> Downloadable assets:
> >> disk image (non-bootable):
> >> https://storage.googleapis.com/syzbot-assets/7bc7510fe41f/non_bootable_disk-d31e3792.raw.xz
> >> vmlinux:
> >> https://storage.googleapis.com/syzbot-assets/c6c2342933c9/vmlinux-d31e3792.xz
> >> kernel image:
> >> https://storage.googleapis.com/syzbot-assets/42df60b42886/bzImage-d31e3792.xz
> >> mounted in repro:
> >> https://storage.googleapis.com/syzbot-assets/78ffd1ddff6c/mount_0.gz
> >>
> >> IMPORTANT: if you fix the issue, please add the following tag to the
> >> commit:
> >> Reported-by: syzbot+ae97a827ae1c3336bbb4@xxxxxxxxxxxxxxxxxxxxxxxxx
> >>
> >> BTRFS info (device loop1): relocating block group 5242880 flags
> >> data|metadata
> >> assertion failed: root->reloc_root == reloc_root, in
> >> fs/btrfs/relocation.c:1919
> >> ------------[ cut here ]------------
> >> kernel BUG at fs/btrfs/relocation.c:1919!
> >> invalid opcode: 0000 [#1] PREEMPT SMP KASAN
> >> CPU: 0 PID: 12638 Comm: syz-executor311 Not tainted
> >> 6.5.0-rc3-syzkaller-00297-gd31e3792919e #0
> >> Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
> >> 1.16.2-debian-1.16.2-1 04/01/2014
> >> RIP: 0010:prepare_to_merge+0x9cc/0xcd0 fs/btrfs/relocation.c:1919
> >> Code: c5 e9 81 fd ff ff e8 e3 59 00 fe b9 7f 07 00 00 48 c7 c2 40 d9
> >> b6 8a 48 c7 c6 20 e6 b6 8a 48 c7 c7 a0 da b6 8a e8 54 bc e3 fd <0f> 0b
> >> 4c 8b 7c 24 38 48 8b 5c 24 10 44 8b 6c 24 0c e8 ae 59 00 fe
> >> RSP: 0018:ffffc90023e176d0 EFLAGS: 00010282
> >> RAX: 000000000000004f RBX: ffff88801e898560 RCX: 0000000000000000
> >> RDX: 0000000000000000 RSI: ffffffff81698120 RDI: 0000000000000005
> >> RBP: ffff88801e898558 R08: 0000000000000005 R09: 0000000000000000
> >> R10: 0000000080000000 R11: 6f69747265737361 R12: dffffc0000000000
> >> R13: ffff88801e898000 R14: ffff88802d944000 R15: ffff888017616618
> >> FS: 00007fb31aba26c0(0000) GS:ffff88806b600000(0000)
> >> knlGS:0000000000000000
> >> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> >> CR2: 00007fb31ac3a758 CR3: 000000002e1dc000 CR4: 0000000000350ef0
> >> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> >> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> >> Call Trace:
> >> <TASK>
> >> relocate_block_group+0x8d1/0xe70 fs/btrfs/relocation.c:3749
> >> btrfs_relocate_block_group+0x714/0xd90 fs/btrfs/relocation.c:4087
> >> btrfs_relocate_chunk+0x143/0x440 fs/btrfs/volumes.c:3283
> >> __btrfs_balance fs/btrfs/volumes.c:4018 [inline]
> >> btrfs_balance+0x20fc/0x3ef0 fs/btrfs/volumes.c:4395
> >> btrfs_ioctl_balance fs/btrfs/ioctl.c:3604 [inline]
> >> btrfs_ioctl+0x1362/0x5cf0 fs/btrfs/ioctl.c:4637
> >> vfs_ioctl fs/ioctl.c:51 [inline]
> >> __do_sys_ioctl fs/ioctl.c:870 [inline]
> >> __se_sys_ioctl fs/ioctl.c:856 [inline]
> >> __x64_sys_ioctl+0x18f/0x210 fs/ioctl.c:856
> >> do_syscall_x64 arch/x86/entry/common.c:50 [inline]
> >> do_syscall_64+0x38/0xb0 arch/x86/entry/common.c:80
> >> entry_SYSCALL_64_after_hwframe+0x63/0xcd
> >> RIP: 0033:0x7fb31abe6e49
> >> Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 b1 18 00 00 90 48 89 f8 48
> >> 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d
> >> 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
> >> RSP: 002b:00007fb31aba2168 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
> >> RAX: ffffffffffffffda RBX: 00007fb31ac73728 RCX: 00007fb31abe6e49
> >> RDX: 00000000200003c0 RSI: 00000000c4009420 RDI: 0000000000000005
> >> RBP: 00007fb31ac73720 R08: 00007fb31aba26c0 R09: 0000000000000000
> >> R10: 0000000000000000 R11: 0000000000000246 R12: 00007fb31ac7372c
> >> R13: 0000000000000006 R14: 00007ffe768d5660 R15: 00007ffe768d5748
> >> </TASK>
> >> Modules linked in:
> >> ---[ end trace 0000000000000000 ]---
> >> RIP: 0010:prepare_to_merge+0x9cc/0xcd0 fs/btrfs/relocation.c:1919
> >> Code: c5 e9 81 fd ff ff e8 e3 59 00 fe b9 7f 07 00 00 48 c7 c2 40 d9
> >> b6 8a 48 c7 c6 20 e6 b6 8a 48 c7 c7 a0 da b6 8a e8 54 bc e3 fd <0f> 0b
> >> 4c 8b 7c 24 38 48 8b 5c 24 10 44 8b 6c 24 0c e8 ae 59 00 fe
> >> RSP: 0018:ffffc90023e176d0 EFLAGS: 00010282
> >> RAX: 000000000000004f RBX: ffff88801e898560 RCX: 0000000000000000
> >> RDX: 0000000000000000 RSI: ffffffff81698120 RDI: 0000000000000005
> >> RBP: ffff88801e898558 R08: 0000000000000005 R09: 0000000000000000
> >> R10: 0000000080000000 R11: 6f69747265737361 R12: dffffc0000000000
> >> R13: ffff88801e898000 R14: ffff88802d944000 R15: ffff888017616618
> >> FS: 00007fb31aba26c0(0000) GS:ffff88806b600000(0000)
> >> knlGS:0000000000000000
> >> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> >> CR2: 00007fb31ac3a758 CR3: 000000002e1dc000 CR4: 0000000000350ef0
> >> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> >> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> >>
> >
> > I failed to reproduce it locally, although it's on David's misc-next.
> >
> > # syz test: git://github.com/kdave/btrfs-devel.git misc-next
>
> # syz test: git://github.com/adam900710/linux.git graceful_reloc_mismatch

#syz test: https://github.com/adam900710/linux graceful_reloc_mismatch

> >
> > Thanks,
> > Qu
> >>
> >> ---
> >> If you want syzbot to run the reproducer, reply with:
> >> #syz test: git://repo/address.git branch-or-commit-hash
> >> If you attach or paste a git patch, syzbot will apply it before testing.
>