Re: WARNING in close_fs_devices (2)
From: Johannes Thumshirn
Date: Mon Sep 21 2020 - 04:09:29 EST
On 21/09/2020 09:58, Anand Jain wrote:
> On 21/9/20 6:42 am, syzbot wrote:
>> syzbot has found a reproducer for the following issue on:
>>
>> HEAD commit: b652d2a5 Add linux-next specific files for 20200918
>> git tree: linux-next
>> console output: https://syzkaller.appspot.com/x/log.txt?x=17e84b07900000
>> kernel config: https://syzkaller.appspot.com/x/.config?x=3cf0782933432b43
>> dashboard link: https://syzkaller.appspot.com/bug?extid=4cfe71a4da060be47502
>> compiler: gcc (GCC) 10.1.0-syz 20200507
>> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=112425d9900000
>> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=1486929b900000
>>
>> IMPORTANT: if you fix the issue, please add the following tag to the commit:
>> Reported-by: syzbot+4cfe71a4da060be47502@xxxxxxxxxxxxxxxxxxxxxxxxx
>>
>> ------------[ cut here ]------------
>> WARNING: CPU: 0 PID: 6972 at fs/btrfs/volumes.c:1172 close_fs_devices+0x715/0x930 fs/btrfs/volumes.c:1172
>> Modules linked in:
>> CPU: 1 PID: 6972 Comm: syz-executor044 Not tainted 5.9.0-rc5-next-20200918-syzkaller #0
>> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
>> RIP: 0010:close_fs_devices+0x715/0x930 fs/btrfs/volumes.c:1172
>> Code: e8 00 b8 4c fe 85 db 0f 85 65 f9 ff ff e8 93 bb 4c fe 0f 0b e9 59 f9 ff ff e8 87 bb 4c fe 0f 0b e9 c0 fe ff ff e8 7b bb 4c fe <0f> 0b e9 f9 fe ff ff 48 c7 c7 fc a1 8f 8b e8 e8 0b 8e fe e9 19 f9
>> RSP: 0018:ffffc900061b7758 EFLAGS: 00010293
>> RAX: 0000000000000000 RBX: ffffffffffffffff RCX: ffffffff83285c2c
>> RDX: ffff8880a6bbe4c0 RSI: ffffffff83285d35 RDI: 0000000000000007
>> RBP: dffffc0000000000 R08: 0000000000000000 R09: ffff8880a2be1133
>> R10: 0000000000000000 R11: 0000000000000000 R12: ffff8880a2be1130
>> R13: ffff8880a2be11ec R14: ffff888093ab0508 R15: ffff8880a2be1050
>> FS: 000000000208a880(0000) GS:ffff8880ae500000(0000) knlGS:0000000000000000
>> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>> CR2: 00000000004babec CR3: 00000000a7bc7000 CR4: 00000000001506e0
>> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
>> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
>> Call Trace:
>> btrfs_close_devices+0x8e/0x4b0 fs/btrfs/volumes.c:1184
>> open_ctree+0x492a/0x49cf fs/btrfs/disk-io.c:3381
>> btrfs_fill_super fs/btrfs/super.c:1316 [inline]
>> btrfs_mount_root.cold+0x14/0x165 fs/btrfs/super.c:1672
>> legacy_get_tree+0x105/0x220 fs/fs_context.c:592
>> vfs_get_tree+0x89/0x2f0 fs/super.c:1547
>> fc_mount fs/namespace.c:983 [inline]
>> vfs_kern_mount.part.0+0xd3/0x170 fs/namespace.c:1013
>> vfs_kern_mount+0x3c/0x60 fs/namespace.c:1000
>> btrfs_mount+0x234/0xaa0 fs/btrfs/super.c:1732
>> legacy_get_tree+0x105/0x220 fs/fs_context.c:592
>> vfs_get_tree+0x89/0x2f0 fs/super.c:1547
>> do_new_mount fs/namespace.c:2896 [inline]
>> path_mount+0x12ae/0x1e70 fs/namespace.c:3216
>> do_mount fs/namespace.c:3229 [inline]
>> __do_sys_mount fs/namespace.c:3437 [inline]
>> __se_sys_mount fs/namespace.c:3414 [inline]
>> __x64_sys_mount+0x27f/0x300 fs/namespace.c:3414
>> do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
>> entry_SYSCALL_64_after_hwframe+0x44/0xa9
>> RIP: 0033:0x44851a
>> Code: b8 08 00 00 00 0f 05 48 3d 01 f0 ff ff 0f 83 cd a2 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 0f 83 aa a2 fb ff c3 66 0f 1f 84 00 00 00 00 00
>> RSP: 002b:00007ffcb26bce08 EFLAGS: 00000293 ORIG_RAX: 00000000000000a5
>> RAX: ffffffffffffffda RBX: 0000000000000004 RCX: 000000000044851a
>> RDX: 0000000020000000 RSI: 0000000020000100 RDI: 00007ffcb26bce50
>> RBP: 00007ffcb26bce90 R08: 00007ffcb26bce90 R09: 0000000020000000
>> R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000003
>> R13: 00007ffcb26bce50 R14: 0000000000000003 R15: 0000000000000001
>>
>
>
> I am able to reproduce. And its quite strange at the moment. A devid 0
> is being scanned. Looks like crafted image.
>
> [19592.946397] BTRFS: device fsid f90cac8b-044b-4fa8-8bee-4b8d3da88dc2
> devid 0 transid 0 /dev/loop0 scanned by t (70902)
Yeah if you look at the C reproducer it crafts an image in memory and
then loop mounts it.