syzbot


possible deadlock in __btrfs_release_delayed_node (4)

Status: upstream: reported on 2024/11/27 04:41
Subsystems: btrfs
[Documentation on labels]
Reported-by: syzbot+aa35cc34a0cc8c783a7f@syzkaller.appspotmail.com
First crash: 125d, last: 6d16h
Discussions (1)
Title Replies (including bot) Last reply
[syzbot] [btrfs?] possible deadlock in __btrfs_release_delayed_node (4) 0 (1) 2024/11/27 04:41
Similar bugs (3)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream possible deadlock in __btrfs_release_delayed_node btrfs 1 860d 860d 22/28 fixed on 2023/02/24 13:50
upstream possible deadlock in __btrfs_release_delayed_node (3) btrfs syz 2 581d 577d 25/28 fixed on 2023/12/21 03:45
upstream possible deadlock in __btrfs_release_delayed_node (2) btrfs 1 743d 739d 0/28 auto-obsoleted due to no activity on 2023/07/13 23:06

Sample crash report:
======================================================
WARNING: possible circular locking dependency detected
6.13.0-rc4-syzkaller-00012-g9b2ffa6148b1 #0 Not tainted
------------------------------------------------------
btrfs-cleaner/6633 is trying to acquire lock:
ffff8880303a2860 (&delayed_node->mutex){+.+.}-{4:4}, at: __btrfs_release_delayed_node+0xa5/0xaf0 fs/btrfs/delayed-inode.c:268

but task is already holding lock:
ffff888033107958 (btrfs-tree-00){++++}-{4:4}, at: btrfs_tree_read_lock_nested+0x2f/0x250 fs/btrfs/locking.c:146

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #1 (btrfs-tree-00){++++}-{4:4}:
       reacquire_held_locks+0x3eb/0x690 kernel/locking/lockdep.c:5374
       __lock_release kernel/locking/lockdep.c:5563 [inline]
       lock_release+0x396/0xa30 kernel/locking/lockdep.c:5870
       up_read+0x16/0x20 kernel/locking/rwsem.c:1619
       btrfs_tree_unlock_rw fs/btrfs/locking.h:213 [inline]
       btrfs_search_slot+0xd85/0x3180 fs/btrfs/ctree.c:2183
       btrfs_lookup_inode+0xdc/0x480 fs/btrfs/inode-item.c:411
       __btrfs_update_delayed_inode+0x1e7/0xb90 fs/btrfs/delayed-inode.c:1030
       btrfs_update_delayed_inode fs/btrfs/delayed-inode.c:1114 [inline]
       __btrfs_commit_inode_delayed_items+0x2318/0x24a0 fs/btrfs/delayed-inode.c:1137
       __btrfs_run_delayed_items+0x213/0x490 fs/btrfs/delayed-inode.c:1171
       btrfs_commit_transaction+0x8a0/0x3720 fs/btrfs/transaction.c:2311
       sync_filesystem+0x1ca/0x230 fs/sync.c:66
       generic_shutdown_super+0x72/0x2d0 fs/super.c:621
       kill_anon_super+0x3b/0x70 fs/super.c:1237
       btrfs_kill_super+0x41/0x50 fs/btrfs/super.c:2100
       deactivate_locked_super+0xc6/0x130 fs/super.c:473
       cleanup_mnt+0x41f/0x4b0 fs/namespace.c:1373
       task_work_run+0x251/0x310 kernel/task_work.c:239
       resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
       exit_to_user_mode_loop kernel/entry/common.c:114 [inline]
       exit_to_user_mode_prepare include/linux/entry-common.h:329 [inline]
       __syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline]
       syscall_exit_to_user_mode+0x13f/0x340 kernel/entry/common.c:218
       do_syscall_64+0x100/0x230 arch/x86/entry/common.c:89
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #0 (&delayed_node->mutex){+.+.}-{4:4}:
       check_prev_add kernel/locking/lockdep.c:3161 [inline]
       check_prevs_add kernel/locking/lockdep.c:3280 [inline]
       validate_chain+0x18ef/0x5920 kernel/locking/lockdep.c:3904
       __lock_acquire+0x1397/0x2100 kernel/locking/lockdep.c:5226
       lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
       __mutex_lock_common kernel/locking/mutex.c:585 [inline]
       __mutex_lock+0x1ac/0xee0 kernel/locking/mutex.c:735
       __btrfs_release_delayed_node+0xa5/0xaf0 fs/btrfs/delayed-inode.c:268
       btrfs_evict_inode+0x752/0x1080 fs/btrfs/inode.c:5384
       evict+0x4ea/0x9a0 fs/inode.c:796
       btrfs_read_locked_inode+0x1027/0x1570 fs/btrfs/inode.c:4006
       btrfs_iget+0x1ca/0x2b0 fs/btrfs/inode.c:5622
       btrfs_run_defrag_inode fs/btrfs/defrag.c:246 [inline]
       btrfs_run_defrag_inodes+0x6bb/0xe40 fs/btrfs/defrag.c:318
       cleaner_kthread+0x28c/0x3d0 fs/btrfs/disk-io.c:1525
       kthread+0x2f2/0x390 kernel/kthread.c:389
       ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147
       ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  rlock(btrfs-tree-00);
                               lock(&delayed_node->mutex);
                               lock(btrfs-tree-00);
  lock(&delayed_node->mutex);

 *** DEADLOCK ***

1 lock held by btrfs-cleaner/6633:
 #0: ffff888033107958 (btrfs-tree-00){++++}-{4:4}, at: btrfs_tree_read_lock_nested+0x2f/0x250 fs/btrfs/locking.c:146

stack backtrace:
CPU: 0 UID: 0 PID: 6633 Comm: btrfs-cleaner Not tainted 6.13.0-rc4-syzkaller-00012-g9b2ffa6148b1 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:94 [inline]
 dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
 print_circular_bug+0x13a/0x1b0 kernel/locking/lockdep.c:2074
 check_noncircular+0x36a/0x4a0 kernel/locking/lockdep.c:2206
 check_prev_add kernel/locking/lockdep.c:3161 [inline]
 check_prevs_add kernel/locking/lockdep.c:3280 [inline]
 validate_chain+0x18ef/0x5920 kernel/locking/lockdep.c:3904
 __lock_acquire+0x1397/0x2100 kernel/locking/lockdep.c:5226
 lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
 __mutex_lock_common kernel/locking/mutex.c:585 [inline]
 __mutex_lock+0x1ac/0xee0 kernel/locking/mutex.c:735
 __btrfs_release_delayed_node+0xa5/0xaf0 fs/btrfs/delayed-inode.c:268
 btrfs_evict_inode+0x752/0x1080 fs/btrfs/inode.c:5384
 evict+0x4ea/0x9a0 fs/inode.c:796
 btrfs_read_locked_inode+0x1027/0x1570 fs/btrfs/inode.c:4006
 btrfs_iget+0x1ca/0x2b0 fs/btrfs/inode.c:5622
 btrfs_run_defrag_inode fs/btrfs/defrag.c:246 [inline]
 btrfs_run_defrag_inodes+0x6bb/0xe40 fs/btrfs/defrag.c:318
 cleaner_kthread+0x28c/0x3d0 fs/btrfs/disk-io.c:1525
 kthread+0x2f2/0x390 kernel/kthread.c:389
 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
 </TASK>

Crashes (22):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2024/12/26 06:55 upstream 9b2ffa6148b1 444551c4 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-root possible deadlock in __btrfs_release_delayed_node
2025/03/21 13:52 upstream b3ee1e460951 62330552 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2025/03/21 13:38 upstream b3ee1e460951 62330552 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2025/03/21 13:37 upstream b3ee1e460951 62330552 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2025/03/19 19:30 upstream 81e4f8d68c66 8d0a2921 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2025/03/17 12:51 upstream 4701f33a1070 948c34e4 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2025/03/12 13:05 upstream 0fed89a961ea ee70e6db .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2025/03/11 02:20 upstream 4d872d51bc9d 16256247 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2025/03/11 02:20 upstream 4d872d51bc9d 16256247 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2025/03/10 18:21 upstream 80e54e84911a 16256247 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2025/03/09 10:06 upstream b7c90e3e717a 163f510d .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2025/02/14 14:56 upstream 128c8f96eb86 fe17639f .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2025/01/22 17:57 upstream c4b9570cfb63 25e17fd3 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2025/01/22 17:57 upstream c4b9570cfb63 25e17fd3 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2025/01/22 17:55 upstream c4b9570cfb63 25e17fd3 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2024/12/04 17:59 upstream feffde684ac2 b50eb251 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2024/12/02 19:37 upstream e70140ba0d2b b499ea68 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2024/11/26 07:25 upstream 2c22dc1ee3a1 11dbc254 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2024/11/26 06:25 upstream 2c22dc1ee3a1 11dbc254 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2024/11/23 11:39 upstream 06afb0f36106 68da6d95 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2024/11/23 04:36 upstream 06afb0f36106 68da6d95 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in __btrfs_release_delayed_node
2024/11/30 21:18 linux-next f486c8aa16b8 68914665 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-linux-next-kasan-gce-root possible deadlock in __btrfs_release_delayed_node
* Struck through repros no longer work on HEAD.