====================================================== WARNING: possible circular locking dependency detected syzkaller #0 Not tainted ------------------------------------------------------ kswapd0/87 is trying to acquire lock: ffff888048d988d8 (&xfs_nondir_ilock_class#3){++++}-{3:3}, at: xfs_reclaim_inode fs/xfs/xfs_icache.c:945 [inline] ffff888048d988d8 (&xfs_nondir_ilock_class#3){++++}-{3:3}, at: xfs_icwalk_process_inode fs/xfs/xfs_icache.c:1640 [inline] ffff888048d988d8 (&xfs_nondir_ilock_class#3){++++}-{3:3}, at: xfs_icwalk_ag+0x1217/0x1a70 fs/xfs/xfs_icache.c:1722 but task is already holding lock: ffffffff8e217240 (fs_reclaim){+.+.}-{0:0}, at: balance_pgdat mm/vmscan.c:7427 [inline] ffffffff8e217240 (fs_reclaim){+.+.}-{0:0}, at: kswapd+0x9b6/0x2ce0 mm/vmscan.c:7799 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (fs_reclaim){+.+.}-{0:0}: __fs_reclaim_acquire mm/page_alloc.c:3600 [inline] fs_reclaim_acquire+0x71/0x100 mm/page_alloc.c:3614 might_alloc include/linux/sched/mm.h:303 [inline] slab_pre_alloc_hook+0x2a/0x300 mm/slab.h:714 slab_alloc_node mm/slub.c:3500 [inline] slab_alloc mm/slub.c:3526 [inline] __kmem_cache_alloc_lru mm/slub.c:3533 [inline] kmem_cache_alloc+0x5a/0x2d0 mm/slub.c:3542 kmem_cache_zalloc include/linux/slab.h:711 [inline] xfs_trans_dup+0xb3/0x5f0 fs/xfs/xfs_trans.c:95 xfs_trans_roll+0x102/0x420 fs/xfs/xfs_trans.c:1143 xfs_defer_trans_roll+0x18a/0x570 fs/xfs/libxfs/xfs_defer.c:403 xfs_defer_relog fs/xfs/libxfs/xfs_defer.c:479 [inline] xfs_defer_finish_noroll+0xac8/0x1230 fs/xfs/libxfs/xfs_defer.c:581 __xfs_trans_commit+0x276/0xd90 fs/xfs/xfs_trans.c:965 xfs_dquot_disk_alloc+0x85c/0xb90 fs/xfs/xfs_dquot.c:383 xfs_qm_dqread+0xff/0x4c0 fs/xfs/xfs_dquot.c:665 xfs_qm_dqget+0x1ee/0x560 fs/xfs/xfs_dquot.c:870 xfs_qm_quotacheck_dqadjust+0xda/0x4d0 fs/xfs/xfs_qm.c:1085 xfs_qm_dqusage_adjust+0x3ee/0x5d0 fs/xfs/xfs_qm.c:1204 xfs_iwalk_ag_recs+0x4c5/0x830 fs/xfs/xfs_iwalk.c:220 xfs_iwalk_run_callbacks+0x236/0x460 fs/xfs/xfs_iwalk.c:376 xfs_iwalk_ag+0x8f5/0x9d0 fs/xfs/xfs_iwalk.c:482 xfs_iwalk_ag_work+0xf5/0x1a0 fs/xfs/xfs_iwalk.c:624 xfs_pwork_work+0x7b/0x180 fs/xfs/xfs_pwork.c:47 process_one_work kernel/workqueue.c:2657 [inline] process_scheduled_works+0xa60/0x1600 kernel/workqueue.c:2734 worker_thread+0xa5e/0xfe0 kernel/workqueue.c:2815 kthread+0x2fa/0x390 kernel/kthread.c:388 ret_from_fork+0x48/0x80 arch/x86/kernel/process.c:152 ret_from_fork_asm+0x11/0x20 arch/x86/entry/entry_64.S:293 -> #0 (&xfs_nondir_ilock_class#3){++++}-{3:3}: check_prev_add kernel/locking/lockdep.c:3162 [inline] check_prevs_add kernel/locking/lockdep.c:3281 [inline] validate_chain kernel/locking/lockdep.c:3897 [inline] __lock_acquire+0x3a07/0x7eb0 kernel/locking/lockdep.c:5171 lock_acquire+0x19e/0x420 kernel/locking/lockdep.c:5790 down_write_nested+0x9e/0x200 kernel/locking/rwsem.c:1689 xfs_reclaim_inode fs/xfs/xfs_icache.c:945 [inline] xfs_icwalk_process_inode fs/xfs/xfs_icache.c:1640 [inline] xfs_icwalk_ag+0x1217/0x1a70 fs/xfs/xfs_icache.c:1722 xfs_icwalk fs/xfs/xfs_icache.c:1771 [inline] xfs_reclaim_inodes_nr+0x188/0x230 fs/xfs/xfs_icache.c:1011 super_cache_scan+0x3e1/0x460 fs/super.c:234 do_shrink_slab+0x519/0xd20 mm/vmscan.c:907 shrink_slab+0x1c9/0x7c0 mm/vmscan.c:1067 shrink_one+0x284/0x7c0 mm/vmscan.c:5444 shrink_many mm/vmscan.c:5507 [inline] lru_gen_shrink_node mm/vmscan.c:5599 [inline] shrink_node+0x3179/0x3740 mm/vmscan.c:6539 kswapd_shrink_node mm/vmscan.c:7348 [inline] balance_pgdat mm/vmscan.c:7539 [inline] kswapd+0x1694/0x2ce0 mm/vmscan.c:7799 kthread+0x2fa/0x390 kernel/kthread.c:388 ret_from_fork+0x48/0x80 arch/x86/kernel/process.c:152 ret_from_fork_asm+0x11/0x20 arch/x86/entry/entry_64.S:293 other info that might help us debug this: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(fs_reclaim ); lock(&xfs_nondir_ilock_class#3); lock(fs_reclaim); lock(&xfs_nondir_ilock_class#3); *** DEADLOCK *** 3 locks held by kswapd0/87: #0: ffffffff8e217240 (fs_reclaim){+.+.}-{0:0}, at: balance_pgdat mm/vmscan.c:7427 [inline] #0: ffffffff8e217240 (fs_reclaim){+.+.}-{0:0}, at: kswapd+0x9b6/0x2ce0 mm/vmscan.c:7799 #1: ffffffff8e1e7ef0 (shrinker_rwsem){++++}-{3:3}, at: shrink_slab+0x120/0x7c0 mm/vmscan.c:1057 #2: ffff888027e220e0 (&type->s_umount_key#117){++++}-{3:3}, at: super_trylock_shared fs/super.c:604 [inline] #2: ffff888027e220e0 (&type->s_umount_key#117){++++}-{3:3}, at: super_cache_scan+0x74/0x460 fs/super.c:203 stack backtrace: CPU: 0 PID: 87 Comm: kswapd0 Not tainted syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/07/2026 Call Trace: dump_stack_lvl+0x18c/0x250 lib/dump_stack.c:106 check_noncircular+0x2fc/0x400 kernel/locking/lockdep.c:2215 check_prev_add kernel/locking/lockdep.c:3162 [inline] check_prevs_add kernel/locking/lockdep.c:3281 [inline] validate_chain kernel/locking/lockdep.c:3897 [inline] __lock_acquire+0x3a07/0x7eb0 kernel/locking/lockdep.c:5171 lock_acquire+0x19e/0x420 kernel/locking/lockdep.c:5790 down_write_nested+0x9e/0x200 kernel/locking/rwsem.c:1689 xfs_reclaim_inode fs/xfs/xfs_icache.c:945 [inline] xfs_icwalk_process_inode fs/xfs/xfs_icache.c:1640 [inline] xfs_icwalk_ag+0x1217/0x1a70 fs/xfs/xfs_icache.c:1722 xfs_icwalk fs/xfs/xfs_icache.c:1771 [inline] xfs_reclaim_inodes_nr+0x188/0x230 fs/xfs/xfs_icache.c:1011 super_cache_scan+0x3e1/0x460 fs/super.c:234 do_shrink_slab+0x519/0xd20 mm/vmscan.c:907 shrink_slab+0x1c9/0x7c0 mm/vmscan.c:1067 shrink_one+0x284/0x7c0 mm/vmscan.c:5444 shrink_many mm/vmscan.c:5507 [inline] lru_gen_shrink_node mm/vmscan.c:5599 [inline] shrink_node+0x3179/0x3740 mm/vmscan.c:6539 kswapd_shrink_node mm/vmscan.c:7348 [inline] balance_pgdat mm/vmscan.c:7539 [inline] kswapd+0x1694/0x2ce0 mm/vmscan.c:7799 kthread+0x2fa/0x390 kernel/kthread.c:388 ret_from_fork+0x48/0x80 arch/x86/kernel/process.c:152 ret_from_fork_asm+0x11/0x20 arch/x86/entry/entry_64.S:293