====================================================== WARNING: possible circular locking dependency detected 6.7.0-rc8-syzkaller-g0802e17d9aca #0 Not tainted ------------------------------------------------------ kswapd0/72 is trying to acquire lock: ffff0000d70b6950 (jbd2_handle){++++}-{0:0}, at: start_this_handle+0x10e8/0x1380 fs/jbd2/transaction.c:461 but task is already holding lock: ffff80008e797500 (fs_reclaim){+.+.}-{0:0}, at: 0x1 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #2 (fs_reclaim){+.+.}-{0:0}: __fs_reclaim_acquire mm/page_alloc.c:3693 [inline] fs_reclaim_acquire+0x84/0x120 mm/page_alloc.c:3707 might_alloc include/linux/sched/mm.h:303 [inline] slab_pre_alloc_hook mm/slab.h:710 [inline] slab_alloc_node mm/slub.c:3460 [inline] __kmem_cache_alloc_node+0x58/0x368 mm/slub.c:3517 __do_kmalloc_node mm/slab_common.c:1006 [inline] __kmalloc_node+0xc0/0x1c4 mm/slab_common.c:1014 kmalloc_node include/linux/slab.h:620 [inline] kvmalloc_node+0x84/0x1c8 mm/util.c:617 kvmalloc include/linux/slab.h:738 [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+0x1654/0x30a8 fs/ext4/xattr.c:1719 ext4_xattr_block_set+0x54c/0x2c24 fs/ext4/xattr.c:1970 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+0xeb4/0x16c0 fs/ext4/xattr.c:2834 __ext4_expand_extra_isize+0x290/0x348 fs/ext4/inode.c:5812 ext4_try_to_expand_extra_isize fs/ext4/inode.c:5855 [inline] __ext4_mark_inode_dirty+0x448/0x848 fs/ext4/inode.c:5933 ext4_set_acl+0x3b8/0x5f0 fs/ext4/acl.c:263 set_posix_acl fs/posix_acl.c:956 [inline] vfs_set_acl+0x728/0x94c fs/posix_acl.c:1135 do_set_acl+0xe4/0x1ac fs/posix_acl.c:1280 do_setxattr fs/xattr.c:627 [inline] setxattr+0x230/0x29c fs/xattr.c:653 path_setxattr+0x17c/0x258 fs/xattr.c:672 __do_sys_setxattr fs/xattr.c:688 [inline] __se_sys_setxattr fs/xattr.c:684 [inline] __arm64_sys_setxattr+0xbc/0xd8 fs/xattr.c:684 __invoke_syscall arch/arm64/kernel/syscall.c:37 [inline] invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:51 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:136 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:155 el0_svc+0x54/0x158 arch/arm64/kernel/entry-common.c:678 el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:696 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:595 -> #1 (&ei->xattr_sem){++++}-{3:3}: down_write+0x50/0xc0 kernel/locking/rwsem.c:1579 ext4_write_lock_xattr fs/ext4/xattr.h:155 [inline] ext4_xattr_set_handle+0x1dc/0x12d0 fs/ext4/xattr.c:2371 ext4_initxattrs+0xa4/0x11c fs/ext4/xattr_security.c:44 security_inode_init_security+0x264/0x428 security/security.c:1668 ext4_init_security+0x44/0x58 fs/ext4/xattr_security.c:58 __ext4_new_inode+0x2bc4/0x39a0 fs/ext4/ialloc.c:1326 ext4_create+0x234/0x480 fs/ext4/namei.c:2833 lookup_open fs/namei.c:3477 [inline] open_last_lookups fs/namei.c:3546 [inline] path_openat+0xfb4/0x2888 fs/namei.c:3776 do_filp_open+0x1bc/0x3cc fs/namei.c:3809 do_sys_openat2+0x124/0x1b8 fs/open.c:1437 do_sys_open fs/open.c:1452 [inline] __do_sys_openat fs/open.c:1468 [inline] __se_sys_openat fs/open.c:1463 [inline] __arm64_sys_openat+0x1f0/0x240 fs/open.c:1463 __invoke_syscall arch/arm64/kernel/syscall.c:37 [inline] invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:51 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:136 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:155 el0_svc+0x54/0x158 arch/arm64/kernel/entry-common.c:678 el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:696 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:595 -> #0 (jbd2_handle){++++}-{0:0}: check_prev_add kernel/locking/lockdep.c:3134 [inline] check_prevs_add kernel/locking/lockdep.c:3253 [inline] validate_chain kernel/locking/lockdep.c:3869 [inline] __lock_acquire+0x3384/0x763c kernel/locking/lockdep.c:5137 lock_acquire+0x23c/0x71c kernel/locking/lockdep.c:5754 start_this_handle+0x1110/0x1380 fs/jbd2/transaction.c:463 jbd2__journal_start+0x29c/0x7b4 fs/jbd2/transaction.c:520 __ext4_journal_start_sb+0x334/0x8d4 fs/ext4/ext4_jbd2.c:112 __ext4_journal_start fs/ext4/ext4_jbd2.h:326 [inline] ext4_dirty_inode+0xa0/0x104 fs/ext4/inode.c:5962 __mark_inode_dirty+0x2b0/0x10f4 fs/fs-writeback.c:2452 mark_inode_dirty_sync include/linux/fs.h:2311 [inline] iput+0x1c0/0x818 fs/inode.c:1800 dentry_unlink_inode+0x370/0x4b0 fs/dcache.c:401 __dentry_kill+0x324/0x5e4 fs/dcache.c:607 shrink_dentry_list+0x41c/0x850 fs/dcache.c:1201 prune_dcache_sb+0x104/0x164 fs/dcache.c:1282 super_cache_scan+0x29c/0x3cc fs/super.c:228 do_shrink_slab+0x62c/0x1234 mm/shrinker.c:435 shrink_slab+0xe9c/0x124c mm/shrinker.c:662 shrink_node_memcgs mm/vmscan.c:5844 [inline] shrink_node+0xe30/0x226c mm/vmscan.c:5877 kswapd_shrink_node mm/vmscan.c:6668 [inline] balance_pgdat+0xfe0/0x1c38 mm/vmscan.c:6858 kswapd+0x7d4/0x1100 mm/vmscan.c:7118 kthread+0x288/0x310 kernel/kthread.c:388 ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:857 other info that might help us debug this: Chain exists of: jbd2_handle --> &ei->xattr_sem --> fs_reclaim Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(fs_reclaim); lock(&ei->xattr_sem); lock(fs_reclaim); rlock(jbd2_handle); *** DEADLOCK *** 2 locks held by kswapd0/72: #0: ffff80008e797500 (fs_reclaim){+.+.}-{0:0}, at: 0x1 #1: ffff0000d77440e0 (&type->s_umount_key#29){++++}-{3:3}, at: super_trylock_shared fs/super.c:610 [inline] #1: ffff0000d77440e0 (&type->s_umount_key#29){++++}-{3:3}, at: super_cache_scan+0x8c/0x3cc fs/super.c:203 stack backtrace: CPU: 0 PID: 72 Comm: kswapd0 Not tainted 6.7.0-rc8-syzkaller-g0802e17d9aca #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/17/2023 Call trace: dump_backtrace+0x1b8/0x1e4 arch/arm64/kernel/stacktrace.c:291 show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:298 __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xd0/0x124 lib/dump_stack.c:106 dump_stack+0x1c/0x28 lib/dump_stack.c:113 print_circular_bug+0x150/0x1b8 kernel/locking/lockdep.c:2060 check_noncircular+0x310/0x404 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 kernel/locking/lockdep.c:3869 [inline] __lock_acquire+0x3384/0x763c kernel/locking/lockdep.c:5137 lock_acquire+0x23c/0x71c kernel/locking/lockdep.c:5754 start_this_handle+0x1110/0x1380 fs/jbd2/transaction.c:463 jbd2__journal_start+0x29c/0x7b4 fs/jbd2/transaction.c:520 __ext4_journal_start_sb+0x334/0x8d4 fs/ext4/ext4_jbd2.c:112 __ext4_journal_start fs/ext4/ext4_jbd2.h:326 [inline] ext4_dirty_inode+0xa0/0x104 fs/ext4/inode.c:5962 __mark_inode_dirty+0x2b0/0x10f4 fs/fs-writeback.c:2452 mark_inode_dirty_sync include/linux/fs.h:2311 [inline] iput+0x1c0/0x818 fs/inode.c:1800 dentry_unlink_inode+0x370/0x4b0 fs/dcache.c:401 __dentry_kill+0x324/0x5e4 fs/dcache.c:607 shrink_dentry_list+0x41c/0x850 fs/dcache.c:1201 prune_dcache_sb+0x104/0x164 fs/dcache.c:1282 super_cache_scan+0x29c/0x3cc fs/super.c:228 do_shrink_slab+0x62c/0x1234 mm/shrinker.c:435 shrink_slab+0xe9c/0x124c mm/shrinker.c:662 shrink_node_memcgs mm/vmscan.c:5844 [inline] shrink_node+0xe30/0x226c mm/vmscan.c:5877 kswapd_shrink_node mm/vmscan.c:6668 [inline] balance_pgdat+0xfe0/0x1c38 mm/vmscan.c:6858 kswapd+0x7d4/0x1100 mm/vmscan.c:7118 kthread+0x288/0x310 kernel/kthread.c:388 ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:857