====================================================== WARNING: possible circular locking dependency detected 6.8.0-syzkaller-08951-gfe46a7dd189e #0 Not tainted ------------------------------------------------------ kswapd0/88 is trying to acquire lock: ffff888029518610 (sb_internal){.+.+}-{0:0}, at: __sb_start_write include/linux/fs.h:1662 [inline] ffff888029518610 (sb_internal){.+.+}-{0:0}, at: sb_start_intwrite include/linux/fs.h:1845 [inline] ffff888029518610 (sb_internal){.+.+}-{0:0}, at: ext4_evict_inode+0x2e4/0xf30 fs/ext4/inode.c:212 but task is already holding lock: ffffffff8e21f720 (fs_reclaim){+.+.}-{0:0}, at: balance_pgdat mm/vmscan.c:6774 [inline] ffffffff8e21f720 (fs_reclaim){+.+.}-{0:0}, at: kswapd+0xb3f/0x36e0 mm/vmscan.c:7146 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #3 (fs_reclaim){+.+.}-{0:0}: lock_acquire+0x1e4/0x530 kernel/locking/lockdep.c:5754 __fs_reclaim_acquire mm/page_alloc.c:3692 [inline] fs_reclaim_acquire+0x88/0x130 mm/page_alloc.c:3706 might_alloc include/linux/sched/mm.h:303 [inline] slab_pre_alloc_hook mm/slub.c:3746 [inline] slab_alloc_node mm/slub.c:3827 [inline] __do_kmalloc_node mm/slub.c:3965 [inline] __kmalloc_node+0xbf/0x4e0 mm/slub.c:3973 kmalloc_node include/linux/slab.h:648 [inline] kvmalloc_node+0x72/0x190 mm/util.c:634 kvmalloc include/linux/slab.h:766 [inline] ext4_xattr_inode_cache_find fs/ext4/xattr.c:1535 [inline] ext4_xattr_inode_lookup_create fs/ext4/xattr.c:1577 [inline] ext4_xattr_set_entry+0x200e/0x3fd0 fs/ext4/xattr.c:1719 ext4_xattr_block_set+0xb15/0x35e0 fs/ext4/xattr.c:2039 ext4_xattr_move_to_block fs/ext4/xattr.c:2667 [inline] ext4_xattr_make_inode_space fs/ext4/xattr.c:2742 [inline] ext4_expand_extra_isize_ea+0x12d7/0x1cf0 fs/ext4/xattr.c:2834 __ext4_expand_extra_isize+0x2fb/0x3e0 fs/ext4/inode.c:5789 ext4_try_to_expand_extra_isize fs/ext4/inode.c:5832 [inline] __ext4_mark_inode_dirty+0x53e/0x870 fs/ext4/inode.c:5910 ext4_delete_inline_entry+0x49a/0x620 fs/ext4/inline.c:1753 ext4_delete_entry+0x13f/0x5c0 fs/ext4/namei.c:2719 __ext4_unlink+0x565/0xb30 fs/ext4/namei.c:3273 ext4_unlink+0x1af/0x560 fs/ext4/namei.c:3321 vfs_unlink+0x367/0x600 fs/namei.c:4338 do_unlinkat+0x4ae/0x830 fs/namei.c:4402 __do_sys_unlinkat fs/namei.c:4445 [inline] __se_sys_unlinkat fs/namei.c:4438 [inline] __x64_sys_unlinkat+0xce/0xf0 fs/namei.c:4438 do_syscall_64+0xfd/0x240 entry_SYSCALL_64_after_hwframe+0x6d/0x75 -> #2 (&ei->xattr_sem){++++}-{3:3}: lock_acquire+0x1e4/0x530 kernel/locking/lockdep.c:5754 down_write+0x3a/0x50 kernel/locking/rwsem.c:1579 ext4_write_lock_xattr fs/ext4/xattr.h:155 [inline] ext4_xattr_set_handle+0x26b/0x1780 fs/ext4/xattr.c:2371 ext4_xattr_set+0x241/0x3d0 fs/ext4/xattr.c:2558 __vfs_setxattr+0x46a/0x4a0 fs/xattr.c:200 __vfs_setxattr_noperm+0x12e/0x5e0 fs/xattr.c:234 vfs_setxattr+0x221/0x430 fs/xattr.c:321 do_setxattr fs/xattr.c:629 [inline] setxattr+0x25d/0x2f0 fs/xattr.c:652 __do_sys_fsetxattr fs/xattr.c:708 [inline] __se_sys_fsetxattr+0x19e/0x220 fs/xattr.c:697 do_syscall_64+0xfd/0x240 entry_SYSCALL_64_after_hwframe+0x6d/0x75 -> #1 (jbd2_handle){++++}-{0:0}: lock_acquire+0x1e4/0x530 kernel/locking/lockdep.c:5754 start_this_handle+0x1fc7/0x2200 fs/jbd2/transaction.c:463 jbd2__journal_start+0x306/0x620 fs/jbd2/transaction.c:520 __ext4_journal_start_sb+0x215/0x5b0 fs/ext4/ext4_jbd2.c:112 ext4_sample_last_mounted fs/ext4/file.c:837 [inline] ext4_file_open+0x53e/0x760 fs/ext4/file.c:866 do_dentry_open+0x909/0x15a0 fs/open.c:955 do_open fs/namei.c:3642 [inline] path_openat+0x2860/0x3240 fs/namei.c:3799 do_filp_open+0x235/0x490 fs/namei.c:3826 do_sys_openat2+0x13e/0x1d0 fs/open.c:1406 do_sys_open fs/open.c:1421 [inline] __do_sys_openat fs/open.c:1437 [inline] __se_sys_openat fs/open.c:1432 [inline] __x64_sys_openat+0x247/0x2a0 fs/open.c:1432 do_syscall_64+0xfd/0x240 entry_SYSCALL_64_after_hwframe+0x6d/0x75 -> #0 (sb_internal){.+.+}-{0:0}: check_prev_add kernel/locking/lockdep.c:3134 [inline] check_prevs_add kernel/locking/lockdep.c:3253 [inline] validate_chain+0x18cb/0x58e0 kernel/locking/lockdep.c:3869 __lock_acquire+0x1346/0x1fd0 kernel/locking/lockdep.c:5137 lock_acquire+0x1e4/0x530 kernel/locking/lockdep.c:5754 percpu_down_read+0x44/0x1b0 include/linux/percpu-rwsem.h:51 __sb_start_write include/linux/fs.h:1662 [inline] sb_start_intwrite include/linux/fs.h:1845 [inline] ext4_evict_inode+0x2e4/0xf30 fs/ext4/inode.c:212 evict+0x2aa/0x630 fs/inode.c:667 __dentry_kill+0x20d/0x630 fs/dcache.c:603 shrink_kill+0xa9/0x2c0 fs/dcache.c:1048 shrink_dentry_list+0x2c0/0x5b0 fs/dcache.c:1075 prune_dcache_sb+0x10f/0x180 fs/dcache.c:1156 super_cache_scan+0x34f/0x4b0 fs/super.c:221 do_shrink_slab+0x6d2/0x1140 mm/shrinker.c:435 shrink_slab_memcg mm/shrinker.c:548 [inline] shrink_slab+0x883/0x14d0 mm/shrinker.c:626 shrink_one+0x423/0x7f0 mm/vmscan.c:4767 shrink_many mm/vmscan.c:4828 [inline] lru_gen_shrink_node mm/vmscan.c:4929 [inline] shrink_node+0x37b8/0x3e70 mm/vmscan.c:5888 kswapd_shrink_node mm/vmscan.c:6696 [inline] balance_pgdat mm/vmscan.c:6886 [inline] kswapd+0x17d1/0x36e0 mm/vmscan.c:7146 kthread+0x2f2/0x390 kernel/kthread.c:388 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:243 other info that might help us debug this: Chain exists of: sb_internal --> &ei->xattr_sem --> fs_reclaim Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(fs_reclaim); lock(&ei->xattr_sem); lock(fs_reclaim); rlock(sb_internal); *** DEADLOCK *** 2 locks held by kswapd0/88: #0: ffffffff8e21f720 (fs_reclaim){+.+.}-{0:0}, at: balance_pgdat mm/vmscan.c:6774 [inline] #0: ffffffff8e21f720 (fs_reclaim){+.+.}-{0:0}, at: kswapd+0xb3f/0x36e0 mm/vmscan.c:7146 #1: ffff8880295180e0 (&type->s_umount_key#33){++++}-{3:3}, at: super_trylock_shared fs/super.c:561 [inline] #1: ffff8880295180e0 (&type->s_umount_key#33){++++}-{3:3}, at: super_cache_scan+0x94/0x4b0 fs/super.c:196 stack backtrace: CPU: 0 PID: 88 Comm: kswapd0 Not tainted 6.8.0-syzkaller-08951-gfe46a7dd189e #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/29/2024 Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114 check_noncircular+0x36a/0x4a0 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+0x18cb/0x58e0 kernel/locking/lockdep.c:3869 __lock_acquire+0x1346/0x1fd0 kernel/locking/lockdep.c:5137 lock_acquire+0x1e4/0x530 kernel/locking/lockdep.c:5754 percpu_down_read+0x44/0x1b0 include/linux/percpu-rwsem.h:51 __sb_start_write include/linux/fs.h:1662 [inline] sb_start_intwrite include/linux/fs.h:1845 [inline] ext4_evict_inode+0x2e4/0xf30 fs/ext4/inode.c:212 evict+0x2aa/0x630 fs/inode.c:667 __dentry_kill+0x20d/0x630 fs/dcache.c:603 shrink_kill+0xa9/0x2c0 fs/dcache.c:1048 shrink_dentry_list+0x2c0/0x5b0 fs/dcache.c:1075 prune_dcache_sb+0x10f/0x180 fs/dcache.c:1156 super_cache_scan+0x34f/0x4b0 fs/super.c:221 do_shrink_slab+0x6d2/0x1140 mm/shrinker.c:435 shrink_slab_memcg mm/shrinker.c:548 [inline] shrink_slab+0x883/0x14d0 mm/shrinker.c:626 shrink_one+0x423/0x7f0 mm/vmscan.c:4767 shrink_many mm/vmscan.c:4828 [inline] lru_gen_shrink_node mm/vmscan.c:4929 [inline] shrink_node+0x37b8/0x3e70 mm/vmscan.c:5888 kswapd_shrink_node mm/vmscan.c:6696 [inline] balance_pgdat mm/vmscan.c:6886 [inline] kswapd+0x17d1/0x36e0 mm/vmscan.c:7146 kthread+0x2f2/0x390 kernel/kthread.c:388 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:243