====================================================== WARNING: possible circular locking dependency detected 6.9.0-syzkaller-12333-g54f71b0369c9 #0 Not tainted ------------------------------------------------------ kworker/3:4/14655 is trying to acquire lock: ffff88804b4a9070 (&ni->file.run_lock#3){++++}-{3:3}, at: ntfs_file_release+0x184/0x220 fs/ntfs3/file.c:1179 but task is already holding lock: ffff88804b4a8fc0 (&ni->ni_lock#2/4){+.+.}-{3:3}, at: ni_lock fs/ntfs3/ntfs_fs.h:1123 [inline] ffff88804b4a8fc0 (&ni->ni_lock#2/4){+.+.}-{3:3}, at: ntfs_file_release+0x175/0x220 fs/ntfs3/file.c:1178 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #4 (&ni->ni_lock#2/4){+.+.}-{3:3}: __mutex_lock_common kernel/locking/mutex.c:608 [inline] __mutex_lock+0x175/0x9c0 kernel/locking/mutex.c:752 ni_lock fs/ntfs3/ntfs_fs.h:1123 [inline] ntfs_fallocate+0x7da/0x1120 fs/ntfs3/file.c:501 vfs_fallocate+0x4b8/0xfb0 fs/open.c:330 ioctl_preallocate+0x1a8/0x220 fs/ioctl.c:291 file_ioctl fs/ioctl.c:334 [inline] do_vfs_ioctl+0x16bd/0x1a90 fs/ioctl.c:886 __do_compat_sys_ioctl+0x149/0x330 fs/ioctl.c:1001 do_syscall_32_irqs_on arch/x86/entry/common.c:165 [inline] __do_fast_syscall_32+0x73/0x120 arch/x86/entry/common.c:386 do_fast_syscall_32+0x32/0x80 arch/x86/entry/common.c:411 entry_SYSENTER_compat_after_hwframe+0x84/0x8e -> #3 (mapping.invalidate_lock#9){++++}-{3:3}: down_read+0x9a/0x330 kernel/locking/rwsem.c:1526 filemap_invalidate_lock_shared include/linux/fs.h:846 [inline] filemap_fault+0x275/0x2610 mm/filemap.c:3301 __do_fault+0x10a/0x490 mm/memory.c:4562 do_read_fault mm/memory.c:4926 [inline] do_fault mm/memory.c:5056 [inline] do_pte_missing mm/memory.c:3903 [inline] handle_pte_fault mm/memory.c:5380 [inline] __handle_mm_fault+0x39e2/0x53f0 mm/memory.c:5523 handle_mm_fault+0x476/0xa00 mm/memory.c:5688 do_user_addr_fault+0x426/0xe50 arch/x86/mm/fault.c:1338 handle_page_fault arch/x86/mm/fault.c:1481 [inline] exc_page_fault+0x5c/0xc0 arch/x86/mm/fault.c:1539 asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:623 -> #2 (&vma->vm_lock->lock){++++}-{3:3}: down_write+0x3a/0x50 kernel/locking/rwsem.c:1579 vma_start_write include/linux/mm.h:731 [inline] vma_link+0x25b/0x480 mm/mmap.c:416 insert_vm_struct+0xf4/0x2d0 mm/mmap.c:3413 __bprm_mm_init fs/exec.c:291 [inline] bprm_mm_init fs/exec.c:395 [inline] alloc_bprm+0x6e0/0xc90 fs/exec.c:1599 kernel_execve+0xb0/0x4e0 fs/exec.c:2023 try_to_run_init_process init/main.c:1395 [inline] kernel_init+0x14a/0x2b0 init/main.c:1523 ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 -> #1 (&mm->mmap_lock){++++}-{3:3}: __might_fault mm/memory.c:6233 [inline] __might_fault+0x11b/0x190 mm/memory.c:6226 _copy_to_user+0x2b/0xc0 lib/usercopy.c:41 copy_to_user include/linux/uaccess.h:191 [inline] fiemap_fill_next_extent+0x205/0x350 fs/ioctl.c:145 ni_fiemap+0x444/0xc10 fs/ntfs3/frecord.c:2065 ntfs_fiemap+0xc9/0x120 fs/ntfs3/file.c:1206 ioctl_fiemap fs/ioctl.c:220 [inline] do_vfs_ioctl+0x404/0x1a90 fs/ioctl.c:841 __do_compat_sys_ioctl+0x149/0x330 fs/ioctl.c:1001 do_syscall_32_irqs_on arch/x86/entry/common.c:165 [inline] __do_fast_syscall_32+0x73/0x120 arch/x86/entry/common.c:386 do_fast_syscall_32+0x32/0x80 arch/x86/entry/common.c:411 entry_SYSENTER_compat_after_hwframe+0x84/0x8e -> #0 (&ni->file.run_lock#3){++++}-{3:3}: check_prev_add kernel/locking/lockdep.c:3134 [inline] check_prevs_add kernel/locking/lockdep.c:3253 [inline] validate_chain kernel/locking/lockdep.c:3869 [inline] __lock_acquire+0x2478/0x3b30 kernel/locking/lockdep.c:5137 lock_acquire kernel/locking/lockdep.c:5754 [inline] lock_acquire+0x1b1/0x560 kernel/locking/lockdep.c:5719 down_write+0x3a/0x50 kernel/locking/rwsem.c:1579 ntfs_file_release+0x184/0x220 fs/ntfs3/file.c:1179 __fput+0x408/0xbb0 fs/file_table.c:422 delayed_fput+0x59/0x80 fs/file_table.c:445 process_one_work+0x958/0x1ad0 kernel/workqueue.c:3231 process_scheduled_works kernel/workqueue.c:3312 [inline] worker_thread+0x6c8/0xf70 kernel/workqueue.c:3393 kthread+0x2c1/0x3a0 kernel/kthread.c:389 ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 other info that might help us debug this: Chain exists of: &ni->file.run_lock #3 --> mapping.invalidate_lock#9 --> &ni->ni_lock#2/4 Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&ni->ni_lock#2/4); lock(mapping.invalidate_lock#9); lock(&ni->ni_lock#2/4); lock(&ni->file.run_lock#3); *** DEADLOCK *** 3 locks held by kworker/3:4/14655: #0: ffff888015488948 ((wq_completion)events){+.+.}-{0:0}, at: process_one_work+0x11f0/0x1ad0 kernel/workqueue.c:3206 #1: ffffc900072a7d80 ((delayed_fput_work).work){+.+.}-{0:0}, at: process_one_work+0x8bb/0x1ad0 kernel/workqueue.c:3207 #2: ffff88804b4a8fc0 (&ni->ni_lock#2/4){+.+.}-{3:3}, at: ni_lock fs/ntfs3/ntfs_fs.h:1123 [inline] #2: ffff88804b4a8fc0 (&ni->ni_lock#2/4){+.+.}-{3:3}, at: ntfs_file_release+0x175/0x220 fs/ntfs3/file.c:1178 stack backtrace: CPU: 3 PID: 14655 Comm: kworker/3:4 Not tainted 6.9.0-syzkaller-12333-g54f71b0369c9 #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 Workqueue: events delayed_fput Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:114 check_noncircular+0x31a/0x400 kernel/locking/lockdep.c:2187 check_prev_add kernel/locking/lockdep.c:3134 [inline] check_prevs_add kernel/locking/lockdep.c:3253 [inline] validate_chain kernel/locking/lockdep.c:3869 [inline] __lock_acquire+0x2478/0x3b30 kernel/locking/lockdep.c:5137 lock_acquire kernel/locking/lockdep.c:5754 [inline] lock_acquire+0x1b1/0x560 kernel/locking/lockdep.c:5719 down_write+0x3a/0x50 kernel/locking/rwsem.c:1579 ntfs_file_release+0x184/0x220 fs/ntfs3/file.c:1179 __fput+0x408/0xbb0 fs/file_table.c:422 delayed_fput+0x59/0x80 fs/file_table.c:445 process_one_work+0x958/0x1ad0 kernel/workqueue.c:3231 process_scheduled_works kernel/workqueue.c:3312 [inline] worker_thread+0x6c8/0xf70 kernel/workqueue.c:3393 kthread+0x2c1/0x3a0 kernel/kthread.c:389 ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244