====================================================== WARNING: possible circular locking dependency detected 6.4.0-syzkaller #0 Not tainted ------------------------------------------------------ kworker/u4:2/33 is trying to acquire lock: ffff888101721120 (&wnd->rw_lock/1){+.+.}-{3:3}, at: ntfs_mark_rec_free+0x2a/0x110 fs/ntfs3/fsntfs.c:741 but task is already holding lock: ffff88810fdb8100 (&ni->ni_lock#3){+.+.}-{3:3}, at: ni_trylock fs/ntfs3/ntfs_fs.h:1143 [inline] ffff88810fdb8100 (&ni->ni_lock#3){+.+.}-{3:3}, at: ni_write_inode+0xa6/0x4c0 fs/ntfs3/frecord.c:3253 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (&ni->ni_lock#3){+.+.}-{3:3}: __mutex_lock_common kernel/locking/mutex.c:603 [inline] __mutex_lock+0x99/0x9a0 kernel/locking/mutex.c:747 ntfs_set_state+0x83/0x1a0 fs/ntfs3/fsntfs.c:945 mi_read+0x25a/0x280 fs/ntfs3/record.c:185 mi_format_new+0x82/0x180 fs/ntfs3/record.c:378 ni_add_subrecord+0x4c/0xf0 fs/ntfs3/frecord.c:371 ntfs_look_free_mft+0x24a/0x450 fs/ntfs3/fsntfs.c:714 ni_create_attr_list+0x2e8/0x4a0 fs/ntfs3/frecord.c:871 ni_ins_attr_ext+0x241/0x3e0 fs/ntfs3/frecord.c:969 ni_insert_attr fs/ntfs3/frecord.c:1136 [inline] ni_insert_resident fs/ntfs3/frecord.c:1520 [inline] ni_add_name+0x1d8/0x300 fs/ntfs3/frecord.c:3044 ni_rename+0x4a/0xc0 fs/ntfs3/frecord.c:3084 ntfs_rename+0x2b3/0x3f0 fs/ntfs3/namei.c:322 vfs_rename+0x3e3/0x570 fs/namei.c:4849 do_renameat2+0x432/0x620 fs/namei.c:5002 __do_sys_renameat2 fs/namei.c:5035 [inline] __se_sys_renameat2 fs/namei.c:5032 [inline] __x64_sys_renameat2+0x4f/0x60 fs/namei.c:5032 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x46/0xa0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x73/0xdd -> #0 (&wnd->rw_lock/1){+.+.}-{3:3}: check_prev_add kernel/locking/lockdep.c:3113 [inline] check_prevs_add kernel/locking/lockdep.c:3232 [inline] validate_chain kernel/locking/lockdep.c:3847 [inline] __lock_acquire+0x1264/0x25a0 kernel/locking/lockdep.c:5088 lock_acquire+0xea/0x270 kernel/locking/lockdep.c:5705 down_write_nested+0x2c/0xb0 kernel/locking/rwsem.c:1689 ntfs_mark_rec_free+0x2a/0x110 fs/ntfs3/fsntfs.c:741 ni_write_inode+0x2d9/0x4c0 fs/ntfs3/frecord.c:3349 write_inode fs/fs-writeback.c:1456 [inline] __writeback_single_inode+0x193/0x3a0 fs/fs-writeback.c:1668 writeback_sb_inodes+0x2f1/0x5f0 fs/fs-writeback.c:1894 wb_writeback+0x179/0x3d0 fs/fs-writeback.c:2068 wb_do_writeback fs/fs-writeback.c:2211 [inline] wb_workfn+0x12a/0x510 fs/fs-writeback.c:2251 process_one_work+0x245/0x490 kernel/workqueue.c:2408 worker_thread+0x218/0x370 kernel/workqueue.c:2555 kthread+0xe9/0x100 kernel/kthread.c:379 ret_from_fork+0x29/0x50 arch/x86/entry/entry_64.S:308 other info that might help us debug this: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&ni->ni_lock#3); lock(&wnd->rw_lock/1); lock(&ni->ni_lock#3); lock(&wnd->rw_lock/1); *** DEADLOCK *** 3 locks held by kworker/u4:2/33: #0: ffff888103a59538 ((wq_completion)writeback){+.+.}-{0:0}, at: process_one_work+0x1ce/0x490 kernel/workqueue.c:2381 #1: ffffc90000187e68 ((work_completion)(&(&wb->dwork)->work)){+.+.}-{0:0}, at: process_one_work+0x1f8/0x490 kernel/workqueue.c:2383 #2: ffff88810fdb8100 (&ni->ni_lock#3){+.+.}-{3:3}, at: ni_trylock fs/ntfs3/ntfs_fs.h:1143 [inline] #2: ffff88810fdb8100 (&ni->ni_lock#3){+.+.}-{3:3}, at: ni_write_inode+0xa6/0x4c0 fs/ntfs3/frecord.c:3253 stack backtrace: CPU: 0 PID: 33 Comm: kworker/u4:2 Not tainted 6.4.0-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/02/2024 Workqueue: writeback wb_workfn (flush-7:0) Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x8d/0xe0 lib/dump_stack.c:106 check_noncircular+0x10c/0x120 kernel/locking/lockdep.c:2188 check_prev_add kernel/locking/lockdep.c:3113 [inline] check_prevs_add kernel/locking/lockdep.c:3232 [inline] validate_chain kernel/locking/lockdep.c:3847 [inline] __lock_acquire+0x1264/0x25a0 kernel/locking/lockdep.c:5088 lock_acquire+0xea/0x270 kernel/locking/lockdep.c:5705 down_write_nested+0x2c/0xb0 kernel/locking/rwsem.c:1689 ntfs_mark_rec_free+0x2a/0x110 fs/ntfs3/fsntfs.c:741 ni_write_inode+0x2d9/0x4c0 fs/ntfs3/frecord.c:3349 write_inode fs/fs-writeback.c:1456 [inline] __writeback_single_inode+0x193/0x3a0 fs/fs-writeback.c:1668 writeback_sb_inodes+0x2f1/0x5f0 fs/fs-writeback.c:1894 wb_writeback+0x179/0x3d0 fs/fs-writeback.c:2068 wb_do_writeback fs/fs-writeback.c:2211 [inline] wb_workfn+0x12a/0x510 fs/fs-writeback.c:2251 process_one_work+0x245/0x490 kernel/workqueue.c:2408 worker_thread+0x218/0x370 kernel/workqueue.c:2555 kthread+0xe9/0x100 kernel/kthread.c:379 ret_from_fork+0x29/0x50 arch/x86/entry/entry_64.S:308