warning: checkpointing journal with EXT4_IOC_CHECKPOINT_FLAG_ZEROOUT can be slow ====================================================== WARNING: possible circular locking dependency detected 6.1.0-rc6-next-20221123 #1 Not tainted ------------------------------------------------------ syz-executor.7/55554 is trying to acquire lock: ffff88800a9c0400 (&sb->s_type->i_mutex_key#6){++++}-{3:3}, at: ext4_bmap+0x52/0x470 but task is already holding lock: ffff8880109203f8 (&journal->j_checkpoint_mutex){+.+.}-{3:3}, at: jbd2_journal_flush+0x48f/0xc10 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #3 (&journal->j_checkpoint_mutex){+.+.}-{3:3}: mutex_lock_io_nested+0x14c/0x1330 jbd2_journal_flush+0x19e/0xc10 ext4_ioctl_group_add+0x2b3/0x580 __ext4_ioctl+0x692/0x4340 __x64_sys_ioctl+0x19e/0x210 do_syscall_64+0x3f/0x90 entry_SYSCALL_64_after_hwframe+0x72/0xdc -> #2 (&journal->j_barrier){+.+.}-{3:3}: __mutex_lock+0x136/0x14e0 jbd2_journal_lock_updates+0x162/0x310 ext4_change_inode_journal_flag+0x183/0x540 ext4_fileattr_set+0x142b/0x18c0 vfs_fileattr_set+0x780/0xb90 do_vfs_ioctl+0xa6c/0x1af0 __x64_sys_ioctl+0x110/0x210 do_syscall_64+0x3f/0x90 entry_SYSCALL_64_after_hwframe+0x72/0xdc -> #1 (&sbi->s_writepages_rwsem){++++}-{0:0}: ext4_writepages+0x1d6/0x3690 do_writepages+0x1b4/0x6a0 filemap_fdatawrite_wbc+0x14b/0x1b0 __filemap_fdatawrite_range+0xba/0x100 filemap_write_and_wait_range+0x8d/0x110 __iomap_dio_rw+0x5f1/0x1bd0 iomap_dio_rw+0x40/0xa0 ext4_file_read_iter+0x2f4/0x4a0 generic_file_splice_read+0x18b/0x4d0 do_splice_to+0x1bc/0x240 splice_direct_to_actor+0x2b0/0x8c0 do_splice_direct+0x1bc/0x290 do_sendfile+0xb1d/0x1280 __x64_sys_sendfile64+0x248/0x2a0 do_syscall_64+0x3f/0x90 entry_SYSCALL_64_after_hwframe+0x72/0xdc -> #0 (&sb->s_type->i_mutex_key#6){++++}-{3:3}: __lock_acquire+0x2a02/0x5e70 lock_acquire+0x1a6/0x530 down_read+0x9c/0x450 ext4_bmap+0x52/0x470 bmap+0xb0/0x130 jbd2_journal_bmap+0xac/0x190 jbd2_journal_flush+0x857/0xc10 __ext4_ioctl+0x9b0/0x4340 __x64_sys_ioctl+0x19e/0x210 do_syscall_64+0x3f/0x90 entry_SYSCALL_64_after_hwframe+0x72/0xdc other info that might help us debug this: Chain exists of: &sb->s_type->i_mutex_key#6 --> &journal->j_barrier --> &journal->j_checkpoint_mutex Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&journal->j_checkpoint_mutex); lock(&journal->j_barrier); lock(&journal->j_checkpoint_mutex); lock(&sb->s_type->i_mutex_key#6); *** DEADLOCK *** 2 locks held by syz-executor.7/55554: #0: ffff888010920170 (&journal->j_barrier){+.+.}-{3:3}, at: jbd2_journal_lock_updates+0x162/0x310 #1: ffff8880109203f8 (&journal->j_checkpoint_mutex){+.+.}-{3:3}, at: jbd2_journal_flush+0x48f/0xc10 stack backtrace: CPU: 0 PID: 55554 Comm: syz-executor.7 Not tainted 6.1.0-rc6-next-20221123 #1 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014 Call Trace: dump_stack_lvl+0x8f/0xb7 check_noncircular+0x263/0x2e0 __lock_acquire+0x2a02/0x5e70 lock_acquire+0x1a6/0x530 down_read+0x9c/0x450 ext4_bmap+0x52/0x470 bmap+0xb0/0x130 jbd2_journal_bmap+0xac/0x190 jbd2_journal_flush+0x857/0xc10 __ext4_ioctl+0x9b0/0x4340 __x64_sys_ioctl+0x19e/0x210 do_syscall_64+0x3f/0x90 entry_SYSCALL_64_after_hwframe+0x72/0xdc RIP: 0033:0x7f8030b4cb19 Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 bc ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f802e0c2188 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 RAX: ffffffffffffffda RBX: 00007f8030c5ff60 RCX: 00007f8030b4cb19 RDX: 0000000020000340 RSI: 000000004004662b RDI: 0000000000000004 RBP: 00007f8030ba6f6d R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007ffd9c5e747f R14: 00007f802e0c2300 R15: 0000000000022000 device syz_tun entered promiscuous mode device syz_tun entered promiscuous mode device syz_tun left promiscuous mode cgroup: fork rejected by pids controller in /syz0 device syz_tun left promiscuous mode capability: warning: `syz-executor.4' uses deprecated v2 capabilities in a way that may be insecure device lo entered promiscuous mode device lo left promiscuous mode device lo entered promiscuous mode device lo left promiscuous mode device lo entered promiscuous mode device lo left promiscuous mode device lo entered promiscuous mode IPv6: Can't replace route, no match found IPv6: Can't replace route, no match found IPv6: Can't replace route, no match found IPv6: Can't replace route, no match found 9pnet_fd: Insufficient options for proto=fd syz-executor.7: epoll_ctl support in io_uring is deprecated and will be removed in a future Linux kernel version. 9pnet_fd: Insufficient options for proto=fd 9pnet_fd: Insufficient options for proto=fd 9pnet_fd: Insufficient options for proto=fd 9pnet_fd: Insufficient options for proto=fd netlink: 'syz-executor.4': attribute type 4 has an invalid length. 9pnet_fd: Insufficient options for proto=fd 9pnet_fd: Insufficient options for proto=fd 9pnet_fd: Insufficient options for proto=fd netlink: 'syz-executor.4': attribute type 4 has an invalid length. netlink: 'syz-executor.4': attribute type 4 has an invalid length.