====================================================== WARNING: possible circular locking dependency detected 4.14.299-syzkaller #0 Not tainted ------------------------------------------------------ kworker/u4:5/9265 is trying to acquire lock: (&rl->lock){++++}, at: [] ntfs_read_block fs/ntfs/aops.c:269 [inline] (&rl->lock){++++}, at: [] ntfs_readpage+0x1396/0x1ad0 fs/ntfs/aops.c:456 but task is already holding lock: (&ni->mrec_lock){+.+.}, at: [] map_mft_record+0x2b/0xbe0 fs/ntfs/mft.c:166 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (&ni->mrec_lock){+.+.}: __mutex_lock_common kernel/locking/mutex.c:756 [inline] __mutex_lock+0xc4/0x1310 kernel/locking/mutex.c:893 map_mft_record+0x2b/0xbe0 fs/ntfs/mft.c:166 ntfs_attr_extend_allocation+0x1e5/0x2f80 fs/ntfs/attrib.c:1996 ntfs_prepare_file_for_write fs/ntfs/file.c:412 [inline] ntfs_file_write_iter+0x61b/0x1f70 fs/ntfs/file.c:1949 call_write_iter include/linux/fs.h:1780 [inline] new_sync_write fs/read_write.c:469 [inline] __vfs_write+0x44c/0x630 fs/read_write.c:482 vfs_write+0x17f/0x4d0 fs/read_write.c:544 SYSC_write fs/read_write.c:590 [inline] SyS_write+0xf2/0x210 fs/read_write.c:582 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x5e/0xd3 -> #0 (&rl->lock){++++}: lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998 down_read+0x36/0x80 kernel/locking/rwsem.c:24 ntfs_read_block fs/ntfs/aops.c:269 [inline] ntfs_readpage+0x1396/0x1ad0 fs/ntfs/aops.c:456 do_read_cache_page+0x38e/0xc10 mm/filemap.c:2713 read_mapping_page include/linux/pagemap.h:398 [inline] ntfs_map_page fs/ntfs/aops.h:89 [inline] ntfs_sync_mft_mirror+0x1f4/0x1560 fs/ntfs/mft.c:490 write_mft_record_nolock+0xece/0x1240 fs/ntfs/mft.c:793 write_mft_record fs/ntfs/mft.h:109 [inline] __ntfs_write_inode+0x58d/0xcc0 fs/ntfs/inode.c:3077 write_inode fs/fs-writeback.c:1241 [inline] __writeback_single_inode+0x6a4/0x1010 fs/fs-writeback.c:1439 writeback_sb_inodes+0x48b/0xd30 fs/fs-writeback.c:1645 wb_writeback+0x243/0xb80 fs/fs-writeback.c:1820 wb_do_writeback fs/fs-writeback.c:1952 [inline] wb_workfn+0x2bd/0xf50 fs/fs-writeback.c:1988 process_one_work+0x793/0x14a0 kernel/workqueue.c:2117 worker_thread+0x5cc/0xff0 kernel/workqueue.c:2251 kthread+0x30d/0x420 kernel/kthread.c:232 ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:406 other info that might help us debug this: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&ni->mrec_lock); lock(&rl->lock); lock(&ni->mrec_lock); lock(&rl->lock); *** DEADLOCK *** 3 locks held by kworker/u4:5/9265: #0: ("writeback"){+.+.}, at: [] process_one_work+0x6b0/0x14a0 kernel/workqueue.c:2088 #1: ((&(&wb->dwork)->work)){+.+.}, at: [] process_one_work+0x6e6/0x14a0 kernel/workqueue.c:2092 #2: (&ni->mrec_lock){+.+.}, at: [] map_mft_record+0x2b/0xbe0 fs/ntfs/mft.c:166 stack backtrace: CPU: 1 PID: 9265 Comm: kworker/u4:5 Not tainted 4.14.299-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022 Workqueue: writeback wb_workfn (flush-7:1) Call Trace: __dump_stack lib/dump_stack.c:17 [inline] dump_stack+0x1b2/0x281 lib/dump_stack.c:58 print_circular_bug.constprop.0.cold+0x2d7/0x41e kernel/locking/lockdep.c:1258 check_prev_add kernel/locking/lockdep.c:1905 [inline] check_prevs_add kernel/locking/lockdep.c:2022 [inline] validate_chain kernel/locking/lockdep.c:2464 [inline] __lock_acquire+0x2e0e/0x3f20 kernel/locking/lockdep.c:3491 lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998 down_read+0x36/0x80 kernel/locking/rwsem.c:24 ntfs_read_block fs/ntfs/aops.c:269 [inline] ntfs_readpage+0x1396/0x1ad0 fs/ntfs/aops.c:456 do_read_cache_page+0x38e/0xc10 mm/filemap.c:2713 read_mapping_page include/linux/pagemap.h:398 [inline] ntfs_map_page fs/ntfs/aops.h:89 [inline] ntfs_sync_mft_mirror+0x1f4/0x1560 fs/ntfs/mft.c:490 write_mft_record_nolock+0xece/0x1240 fs/ntfs/mft.c:793 write_mft_record fs/ntfs/mft.h:109 [inline] __ntfs_write_inode+0x58d/0xcc0 fs/ntfs/inode.c:3077 write_inode fs/fs-writeback.c:1241 [inline] __writeback_single_inode+0x6a4/0x1010 fs/fs-writeback.c:1439 writeback_sb_inodes+0x48b/0xd30 fs/fs-writeback.c:1645 wb_writeback+0x243/0xb80 fs/fs-writeback.c:1820 wb_do_writeback fs/fs-writeback.c:1952 [inline] wb_workfn+0x2bd/0xf50 fs/fs-writeback.c:1988 process_one_work+0x793/0x14a0 kernel/workqueue.c:2117 worker_thread+0x5cc/0xff0 kernel/workqueue.c:2251 kthread+0x30d/0x420 kernel/kthread.c:232 ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:406 ntfs: volume version 3.1. ntfs: volume version 3.1. ntfs: volume version 3.1. ntfs: volume version 3.1. ntfs: volume version 3.1. syz-executor.3 (10286): drop_caches: 1 ntfs: volume version 3.1. ntfs: volume version 3.1. syz-executor.3 (10286): drop_caches: 1 ntfs: volume version 3.1. ntfs: volume version 3.1. ntfs: volume version 3.1. syz-executor.3 (10360): drop_caches: 1 syz-executor.3 (10360): drop_caches: 1 nla_parse: 1 callbacks suppressed netlink: 24 bytes leftover after parsing attributes in process `syz-executor.4'. IPVS: ftp: loaded support on port[0] = 21 F2FS-fs (loop3): invalid crc value F2FS-fs (loop3): Found nat_bits in checkpoint F2FS-fs (loop3): Mounted with checkpoint version = 3651456e netlink: 24 bytes leftover after parsing attributes in process `syz-executor.4'. netlink: 24 bytes leftover after parsing attributes in process `syz-executor.4'. F2FS-fs (loop3): invalid crc value F2FS-fs (loop3): Found nat_bits in checkpoint IPVS: ftp: loaded support on port[0] = 21 F2FS-fs (loop3): Mounted with checkpoint version = 3651456e netlink: 24 bytes leftover after parsing attributes in process `syz-executor.4'. F2FS-fs (loop3): invalid crc value F2FS-fs (loop3): Found nat_bits in checkpoint F2FS-fs (loop3): Mounted with checkpoint version = 3651456e F2FS-fs (loop3): invalid crc value FAT-fs (loop3): Unrecognized mount option "usefree˙˙˙˙˙˙˙˙" or missing value new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored FAT-fs (loop3): Unrecognized mount option "usefree˙˙˙˙˙˙˙˙" or missing value new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored FAT-fs (loop3): Unrecognized mount option "usefree˙˙˙˙˙˙˙˙" or missing value new mount options do not match the existing superblock, will be ignored FAT-fs (loop3): Unrecognized mount option "usefree˙˙˙˙˙˙˙˙" or missing value new mount options do not match the existing superblock, will be ignored f2fs_msg: 2 callbacks suppressed F2FS-fs (loop3): invalid crc value F2FS-fs (loop3): Found nat_bits in checkpoint F2FS-fs (loop3): Mounted with checkpoint version = 3651456e F2FS-fs (loop0): invalid crc value F2FS-fs (loop3): invalid crc value F2FS-fs (loop3): Found nat_bits in checkpoint F2FS-fs (loop0): Found nat_bits in checkpoint F2FS-fs (loop0): Mounted with checkpoint version = 3651456e F2FS-fs (loop3): Mounted with checkpoint version = 3651456e F2FS-fs (loop0): invalid crc value