====================================================== WARNING: possible circular locking dependency detected 5.11.0-syzkaller #0 Not tainted ------------------------------------------------------ kworker/u4:3/196 is trying to acquire lock: ffff88802eeb08c0 (&rl->lock){++++}-{3:3}, at: ntfs_read_block fs/ntfs/aops.c:248 [inline] ffff88802eeb08c0 (&rl->lock){++++}-{3:3}, at: ntfs_readpage+0x1241/0x1ca0 fs/ntfs/aops.c:435 but task is already holding lock: ffff88802eeb3010 (&ni->mrec_lock){+.+.}-{3:3}, at: map_mft_record+0x3a/0xc50 fs/ntfs/mft.c:154 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (&ni->mrec_lock){+.+.}-{3:3}: __mutex_lock_common kernel/locking/mutex.c:956 [inline] __mutex_lock+0x134/0x1110 kernel/locking/mutex.c:1103 map_mft_record+0x3a/0xc50 fs/ntfs/mft.c:154 ntfs_map_runlist_nolock+0xa7e/0x15f0 fs/ntfs/attrib.c:91 ntfs_map_runlist+0x5a/0x80 fs/ntfs/attrib.c:292 ntfs_read_block fs/ntfs/aops.c:283 [inline] ntfs_readpage+0x129f/0x1ca0 fs/ntfs/aops.c:435 read_pages+0x4dc/0x7c0 mm/readahead.c:145 page_cache_ra_unbounded+0x443/0x7b0 mm/readahead.c:238 page_cache_sync_readahead include/linux/pagemap.h:839 [inline] generic_file_buffered_read_get_pages+0x272/0x1c60 mm/filemap.c:2365 generic_file_buffered_read+0x2a0/0xbc0 mm/filemap.c:2485 __kernel_read+0x466/0x950 fs/read_write.c:454 integrity_kernel_read+0x68/0x90 security/integrity/iint.c:191 ima_calc_file_hash_tfm+0x253/0x340 security/integrity/ima/ima_crypto.c:484 ima_calc_file_shash security/integrity/ima/ima_crypto.c:515 [inline] ima_calc_file_hash+0x12f/0x3b0 security/integrity/ima/ima_crypto.c:572 ima_collect_measurement+0x3c0/0x490 security/integrity/ima/ima_api.c:250 process_measurement+0x863/0x12e0 security/integrity/ima/ima_main.c:330 ima_file_check+0xb4/0x100 security/integrity/ima/ima_main.c:498 do_open fs/namei.c:3256 [inline] path_openat+0x1040/0x21d0 fs/namei.c:3371 do_filp_open+0x16d/0x390 fs/namei.c:3398 do_sys_openat2+0x11e/0x360 fs/open.c:1172 do_sys_open fs/open.c:1188 [inline] __do_sys_openat fs/open.c:1204 [inline] __se_sys_openat fs/open.c:1199 [inline] __x64_sys_openat+0x11b/0x1d0 fs/open.c:1199 do_syscall_64+0x2d/0x40 arch/x86/entry/common.c:46 entry_SYSCALL_64_after_hwframe+0x44/0xa9 -> #0 (&rl->lock){++++}-{3:3}: check_prev_add kernel/locking/lockdep.c:2868 [inline] check_prevs_add kernel/locking/lockdep.c:2993 [inline] validate_chain kernel/locking/lockdep.c:3608 [inline] __lock_acquire+0x2b2a/0x5500 kernel/locking/lockdep.c:4832 lock_acquire kernel/locking/lockdep.c:5442 [inline] lock_acquire+0x1a8/0x720 kernel/locking/lockdep.c:5407 down_read+0x95/0x440 kernel/locking/rwsem.c:1353 ntfs_read_block fs/ntfs/aops.c:248 [inline] ntfs_readpage+0x1241/0x1ca0 fs/ntfs/aops.c:435 do_read_cache_page+0x53b/0xd00 mm/filemap.c:3101 read_mapping_page include/linux/pagemap.h:500 [inline] ntfs_map_page+0xd/0x2b0 fs/ntfs/aops.h:75 ntfs_sync_mft_mirror+0x1d7/0x1600 fs/ntfs/mft.c:480 write_mft_record_nolock+0x1056/0x14c0 fs/ntfs/mft.c:787 write_mft_record fs/ntfs/mft.h:95 [inline] __ntfs_write_inode+0x7e7/0xbe0 fs/ntfs/inode.c:3031 write_inode fs/fs-writeback.c:1320 [inline] __writeback_single_inode+0x77e/0xb30 fs/fs-writeback.c:1518 writeback_sb_inodes+0x466/0xc40 fs/fs-writeback.c:1723 wb_writeback+0x23b/0x8c0 fs/fs-writeback.c:1896 wb_do_writeback fs/fs-writeback.c:2041 [inline] wb_workfn+0x263/0xf40 fs/fs-writeback.c:2082 process_one_work+0x84c/0x13b0 kernel/workqueue.c:2275 worker_thread+0x598/0xf80 kernel/workqueue.c:2421 kthread+0x36f/0x450 kernel/kthread.c:292 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:296 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:3/196: #0: ffff88801618b938 ((wq_completion)writeback){+.+.}-{0:0}, at: arch_atomic64_set arch/x86/include/asm/atomic64_64.h:34 [inline] #0: ffff88801618b938 ((wq_completion)writeback){+.+.}-{0:0}, at: atomic64_set include/asm-generic/atomic-instrumented.h:856 [inline] #0: ffff88801618b938 ((wq_completion)writeback){+.+.}-{0:0}, at: atomic_long_set include/asm-generic/atomic-long.h:41 [inline] #0: ffff88801618b938 ((wq_completion)writeback){+.+.}-{0:0}, at: set_work_data kernel/workqueue.c:616 [inline] #0: ffff88801618b938 ((wq_completion)writeback){+.+.}-{0:0}, at: set_work_pool_and_clear_pending kernel/workqueue.c:643 [inline] #0: ffff88801618b938 ((wq_completion)writeback){+.+.}-{0:0}, at: process_one_work+0x771/0x13b0 kernel/workqueue.c:2246 #1: ffffc9000173fdb0 ((work_completion)(&(&wb->dwork)->work)){+.+.}-{0:0}, at: process_one_work+0x79e/0x13b0 kernel/workqueue.c:2250 #2: ffff88802eeb3010 (&ni->mrec_lock){+.+.}-{3:3}, at: map_mft_record+0x3a/0xc50 fs/ntfs/mft.c:154 stack backtrace: CPU: 1 PID: 196 Comm: kworker/u4:3 Not tainted 5.11.0-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022 Workqueue: writeback wb_workfn (flush-7:0) Call Trace: __dump_stack lib/dump_stack.c:79 [inline] dump_stack+0x9a/0xcc lib/dump_stack.c:120 check_noncircular+0x25f/0x2e0 kernel/locking/lockdep.c:2117 check_prev_add kernel/locking/lockdep.c:2868 [inline] check_prevs_add kernel/locking/lockdep.c:2993 [inline] validate_chain kernel/locking/lockdep.c:3608 [inline] __lock_acquire+0x2b2a/0x5500 kernel/locking/lockdep.c:4832 lock_acquire kernel/locking/lockdep.c:5442 [inline] lock_acquire+0x1a8/0x720 kernel/locking/lockdep.c:5407 down_read+0x95/0x440 kernel/locking/rwsem.c:1353 ntfs_read_block fs/ntfs/aops.c:248 [inline] ntfs_readpage+0x1241/0x1ca0 fs/ntfs/aops.c:435 do_read_cache_page+0x53b/0xd00 mm/filemap.c:3101 read_mapping_page include/linux/pagemap.h:500 [inline] ntfs_map_page+0xd/0x2b0 fs/ntfs/aops.h:75 ntfs_sync_mft_mirror+0x1d7/0x1600 fs/ntfs/mft.c:480 write_mft_record_nolock+0x1056/0x14c0 fs/ntfs/mft.c:787 write_mft_record fs/ntfs/mft.h:95 [inline] __ntfs_write_inode+0x7e7/0xbe0 fs/ntfs/inode.c:3031 write_inode fs/fs-writeback.c:1320 [inline] __writeback_single_inode+0x77e/0xb30 fs/fs-writeback.c:1518 writeback_sb_inodes+0x466/0xc40 fs/fs-writeback.c:1723 wb_writeback+0x23b/0x8c0 fs/fs-writeback.c:1896 wb_do_writeback fs/fs-writeback.c:2041 [inline] wb_workfn+0x263/0xf40 fs/fs-writeback.c:2082 process_one_work+0x84c/0x13b0 kernel/workqueue.c:2275 worker_thread+0x598/0xf80 kernel/workqueue.c:2421 kthread+0x36f/0x450 kernel/kthread.c:292 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:296