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

but task is already holding lock:
ffff8881b82c3708 (vm_lock){++++}-{0:0}, at: lock_vma_under_rcu+0x1d1/0x500

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #7 (vm_lock){++++}-{0:0}:
       __vma_start_exclude_readers+0x28a/0x940
       __vma_start_write+0xdc/0x290
       mprotect_fixup+0x785/0xb60
       setup_arg_pages+0x664/0xbd0
       load_elf_binary+0xc5e/0x2980
       bprm_execve+0x94a/0x1510
       kernel_execve+0x844/0x930
       try_to_run_init_process+0x13/0x60
       kernel_init+0xad/0x1d0
       ret_from_fork+0x514/0xb70
       ret_from_fork_asm+0x1a/0x30

-> #6 (&mm->mmap_lock){++++}-{4:4}:
       __might_fault+0xcb/0x130
       _copy_to_user+0x2c/0xb0
       fiemap_fill_next_extent+0x1dd/0x3c0
       iomap_fiemap+0x498/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

-> #5 (&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

-> #4 (&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

-> #3 (btrfs_trans_num_extwriters){++++}-{0:0}:
       join_transaction+0x192/0xe40
       start_transaction+0xbef/0x1820
       btrfs_rebuild_free_space_tree+0xbb/0x6e0
       btrfs_start_pre_rw_mount+0x1529/0x1f20
       open_ctree+0x2e04/0x4190
       btrfs_get_tree+0x1061/0x1910
       vfs_get_tree+0x92/0x2a0
       do_new_mount+0x341/0xd30
       __se_sys_mount+0x31d/0x420
       do_syscall_64+0x15f/0xf80
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #2 (btrfs_trans_num_writers){++++}-{0:0}:
       join_transaction+0x171/0xe40
       start_transaction+0xbef/0x1820
       btrfs_rebuild_free_space_tree+0xbb/0x6e0
       btrfs_start_pre_rw_mount+0x1529/0x1f20
       open_ctree+0x2e04/0x4190
       btrfs_get_tree+0x1061/0x1910
       vfs_get_tree+0x92/0x2a0
       do_new_mount+0x341/0xd30
       __se_sys_mount+0x31d/0x420
       do_syscall_64+0x15f/0xf80
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #1 (sb_internal#2){++++}-{0:0}:
       percpu_down_write+0x54/0x320
       freeze_super+0x911/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#3){++++}-{0:0}:
       __lock_acquire+0x15a5/0x2cf0
       lock_acquire+0x106/0x350
       btrfs_page_mkwrite+0x351/0x1a60
       do_page_mkwrite+0x14d/0x310
       do_wp_page+0x19ba/0x4cc0
       handle_mm_fault+0x151d/0x3170
       do_user_addr_fault+0xa73/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#3 --> &mm->mmap_lock --> vm_lock

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  rlock(vm_lock);
                               lock(&mm->mmap_lock);
                               lock(vm_lock);
  rlock(sb_pagefaults#3);

 *** DEADLOCK ***

1 lock held by syz.6.11680/18153:
 #0: ffff8881b82c3708 (vm_lock){++++}-{0:0}, at: lock_vma_under_rcu+0x1d1/0x500

stack backtrace:
CPU: 1 UID: 0 PID: 18153 Comm: syz.6.11680 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_wp_page+0x19ba/0x4cc0
 handle_mm_fault+0x151d/0x3170
 do_user_addr_fault+0xa73/0x1340
 exc_page_fault+0x6a/0xc0
 asm_exc_page_fault+0x26/0x30
RIP: 0033:0x7f074db6dc18
Code: 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 89 4c 17 f8 c3 0f 10 54 16 f0 0f 10 5c 16 e0 0f 11 07
RSP: 002b:00007fff0e77f1d8 EFLAGS: 00010246
RAX: 0000200000000080 RBX: 0000000000000004 RCX: 0031656c69662f2e
RDX: 0000000000000008 RSI: 0031656c69662f2e RDI: 0000200000000080
RBP: fffffffffffffffe R08: 0000001b33220000 R09: 0000000000000001
R10: 7ffffffffffffff7 R11: 0000000000000009 R12: 00007fff0e77f300
R13: 00007f074de15fac R14: 00000000001f146c R15: 00007f074de15fa0
 </TASK>
