======================================================
WARNING: possible circular locking dependency detected
syzkaller #0 Tainted: G             L     
------------------------------------------------------
syz.6.38712/7799 is trying to acquire lock:
ffff88810fb14508 (sb_pagefaults#10){++++}-{0:0}, at: do_page_mkwrite+0x14d/0x310

but task is already holding lock:
ffff888175fe9bb8 (&mm->mmap_lock){++++}-{4:4}, at: lock_mm_and_find_vma+0x36/0x340

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #5 (&mm->mmap_lock){++++}-{4:4}:
       __might_fault+0xcb/0x130
       _copy_to_user+0x2c/0xb0
       fiemap_fill_next_extent+0x1dd/0x3c0
       iomap_fiemap+0x2a4/0x580
       ext4_fiemap+0x285/0x330
       do_vfs_ioctl+0x125a/0x1530
       __se_sys_ioctl+0x82/0x170
       do_syscall_64+0x15f/0xf80
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #4 (&type->i_mutex_dir_key#3){++++}-{4:4}:
       down_read+0x47/0x2e0
       lookup_slow+0x46/0x70
       path_lookupat+0x3f5/0x8c0
       filename_lookup+0x256/0x5d0
       kern_path+0x3d/0x150
       device_list_add+0xfd1/0x2280
       btrfs_scan_one_device+0x3ef/0x680
       btrfs_control_ioctl+0x128/0x360
       __se_sys_ioctl+0xfc/0x170
       do_syscall_64+0x15f/0xf80
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #3 (&fs_devs->device_list_mutex){+.+.}-{4:4}:
       __mutex_lock+0x1a3/0x1550
       btrfs_create_pending_block_groups+0x77b/0x1b40
       __btrfs_end_transaction+0x140/0x650
       flush_space+0x406/0xe20
       do_async_reclaim_metadata_space+0x3fc/0x960
       btrfs_async_reclaim_metadata_space+0x89/0xe0
       process_scheduled_works+0xb5d/0x1860
       worker_thread+0xa53/0xfc0
       kthread+0x388/0x470
       ret_from_fork+0x514/0xb70
       ret_from_fork_asm+0x1a/0x30

-> #2 (btrfs_trans_num_extwriters){++++}-{0:0}:
       join_transaction+0x192/0xe40
       start_transaction+0xbef/0x1820
       btrfs_uuid_scan_kthread+0x5df/0xb00
       kthread+0x388/0x470
       ret_from_fork+0x514/0xb70
       ret_from_fork_asm+0x1a/0x30

-> #1 (btrfs_trans_num_writers){++++}-{0:0}:
       join_transaction+0x6f7/0xe40
       start_transaction+0xbef/0x1820
       btrfs_attach_transaction_barrier+0x24/0xa0
       btrfs_sync_fs+0x10a/0x6a0
       sync_filesystem+0x1cf/0x230
       freeze_super+0x56c/0x1190
       btrfs_ioctl_shutdown+0x150/0x1c0
       btrfs_ioctl+0xa75/0xd10
       __se_sys_ioctl+0xfc/0x170
       do_syscall_64+0x15f/0xf80
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #0 (sb_pagefaults#10){++++}-{0:0}:
       __lock_acquire+0x15a5/0x2cf0
       lock_acquire+0x106/0x350
       btrfs_page_mkwrite+0x351/0x1a60
       do_page_mkwrite+0x14d/0x310
       do_pte_missing+0x6dc/0x33f0
       handle_mm_fault+0x1bd7/0x3170
       do_user_addr_fault+0x75b/0x1340
       exc_page_fault+0x6a/0xc0
       asm_exc_page_fault+0x26/0x30

other info that might help us debug this:

Chain exists of:
  sb_pagefaults#10 --> &type->i_mutex_dir_key#3 --> &mm->mmap_lock

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  rlock(&mm->mmap_lock);
                               lock(&type->i_mutex_dir_key#3);
                               lock(&mm->mmap_lock);
  rlock(sb_pagefaults#10);

 *** DEADLOCK ***

1 lock held by syz.6.38712/7799:
 #0: ffff888175fe9bb8 (&mm->mmap_lock){++++}-{4:4}, at: lock_mm_and_find_vma+0x36/0x340

stack backtrace:
CPU: 0 UID: 0 PID: 7799 Comm: syz.6.38712 Tainted: G             L      syzkaller #0 PREEMPT(full) 
Tainted: [L]=SOFTLOCKUP
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
Call Trace:
 <TASK>
 dump_stack_lvl+0xe8/0x150
 print_circular_bug+0x2e1/0x300
 check_noncircular+0x12e/0x150
 __lock_acquire+0x15a5/0x2cf0
 lock_acquire+0x106/0x350
 btrfs_page_mkwrite+0x351/0x1a60
 do_page_mkwrite+0x14d/0x310
 do_pte_missing+0x6dc/0x33f0
 handle_mm_fault+0x1bd7/0x3170
 do_user_addr_fault+0x75b/0x1340
 exc_page_fault+0x6a/0xc0
 asm_exc_page_fault+0x26/0x30
RIP: 0033:0x7f133416dc06
Code: 4c 17 f0 c3 83 fa 08 73 2b 83 fa 04 73 16 83 fa 01 7c 10 8a 0e 74 0a 0f b7 74 16 fe 66 89 74 17 fe 88 0f c3 8b 4c 16 fc 8b 36 <89> 4c 17 fc 89 37 c3 0f 1f 00 48 8b 4c 16 f8 48 8b 36 48 89 37 48
RSP: 002b:00007ffcb820af18 EFLAGS: 00010202
RAX: 00002000000005c0 RBX: 0000000000000004 RCX: 0000000000737562
RDX: 0000000000000006 RSI: 0000000075622f2e RDI: 00002000000005c0
RBP: fffffffffffffffe R08: 0000001b31320000 R09: 0000000000000001
R10: 7ffffffffffffff9 R11: 0000000000000009 R12: 00007ffcb820b040
R13: 00007f1334415fac R14: 00000000002da77d R15: 00007f1334415fa0
 </TASK>
