syzbot


inconsistent lock state in btrfs_add_delayed_iput

Status: auto-obsoleted due to no activity on 2023/10/22 12:09
Subsystems: btrfs
[Documentation on labels]
Reported-by: syzbot+9786684f27757c60b3cc@syzkaller.appspotmail.com
First crash: 633d, last: 619d
Discussions (1)
Title Replies (including bot) Last reply
[syzbot] [btrfs?] inconsistent lock state in btrfs_add_delayed_iput 0 (1) 2023/07/05 07:47

Sample crash report:
WARNING: inconsistent lock state
6.4.0-syzkaller-09904-ga507db1d8fdc #0 Not tainted
--------------------------------
inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
ksoftirqd/3/32 [HC0[0]:SC1[1]:HE1:SE0] takes:
ffff888025dd0d20 (&fs_info->delayed_iput_lock){+.?.}-{2:2}, at: spin_lock include/linux/spinlock.h:350 [inline]
ffff888025dd0d20 (&fs_info->delayed_iput_lock){+.?.}-{2:2}, at: btrfs_add_delayed_iput+0x128/0x390 fs/btrfs/inode.c:3490
{SOFTIRQ-ON-W} state was registered at:
  lock_acquire kernel/locking/lockdep.c:5761 [inline]
  lock_acquire+0x1b1/0x520 kernel/locking/lockdep.c:5726
  __raw_spin_lock include/linux/spinlock_api_smp.h:133 [inline]
  _raw_spin_lock+0x2e/0x40 kernel/locking/spinlock.c:154
  spin_lock include/linux/spinlock.h:350 [inline]
  btrfs_run_delayed_iputs+0x28/0xe0 fs/btrfs/inode.c:3523
  close_ctree+0x217/0xf70 fs/btrfs/disk-io.c:4315
  generic_shutdown_super+0x158/0x480 fs/super.c:499
  kill_anon_super+0x3a/0x60 fs/super.c:1110
  btrfs_kill_super+0x3c/0x50 fs/btrfs/super.c:2138
  deactivate_locked_super+0x98/0x160 fs/super.c:330
  deactivate_super+0xb1/0xd0 fs/super.c:361
  cleanup_mnt+0x2ae/0x3d0 fs/namespace.c:1254
  task_work_run+0x16f/0x270 kernel/task_work.c:179
  resume_user_mode_work include/linux/resume_user_mode.h:49 [inline]
  exit_to_user_mode_loop kernel/entry/common.c:171 [inline]
  exit_to_user_mode_prepare+0x210/0x240 kernel/entry/common.c:204
  __syscall_exit_to_user_mode_work kernel/entry/common.c:286 [inline]
  syscall_exit_to_user_mode+0x1d/0x50 kernel/entry/common.c:297
  do_syscall_64+0x46/0xb0 arch/x86/entry/common.c:86
  entry_SYSCALL_64_after_hwframe+0x63/0xcd
irq event stamp: 215394
hardirqs last  enabled at (215394): [<ffffffff81d5ebc4>] __do_kmem_cache_free mm/slab.c:3558 [inline]
hardirqs last  enabled at (215394): [<ffffffff81d5ebc4>] kmem_cache_free mm/slab.c:3582 [inline]
hardirqs last  enabled at (215394): [<ffffffff81d5ebc4>] kmem_cache_free+0x244/0x370 mm/slab.c:3575
hardirqs last disabled at (215393): [<ffffffff81d5eb5e>] __do_kmem_cache_free mm/slab.c:3553 [inline]
hardirqs last disabled at (215393): [<ffffffff81d5eb5e>] kmem_cache_free mm/slab.c:3582 [inline]
hardirqs last disabled at (215393): [<ffffffff81d5eb5e>] kmem_cache_free+0x1de/0x370 mm/slab.c:3575
softirqs last  enabled at (215364): [<ffffffff814d1a81>] run_ksoftirqd kernel/softirq.c:921 [inline]
softirqs last  enabled at (215364): [<ffffffff814d1a81>] run_ksoftirqd+0x31/0x60 kernel/softirq.c:913
softirqs last disabled at (215369): [<ffffffff814d1a81>] run_ksoftirqd kernel/softirq.c:921 [inline]
softirqs last disabled at (215369): [<ffffffff814d1a81>] run_ksoftirqd+0x31/0x60 kernel/softirq.c:913

other info that might help us debug this:
 Possible unsafe locking scenario:

       CPU0
       ----
  lock(&fs_info->delayed_iput_lock);
  <Interrupt>
    lock(&fs_info->delayed_iput_lock);

 *** DEADLOCK ***

no locks held by ksoftirqd/3/32.

stack backtrace:
CPU: 3 PID: 32 Comm: ksoftirqd/3 Not tainted 6.4.0-syzkaller-09904-ga507db1d8fdc #0
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0xd9/0x150 lib/dump_stack.c:106
 print_usage_bug kernel/locking/lockdep.c:3978 [inline]
 valid_state kernel/locking/lockdep.c:4020 [inline]
 mark_lock_irq kernel/locking/lockdep.c:4223 [inline]
 mark_lock.part.0+0x1102/0x1960 kernel/locking/lockdep.c:4685
 mark_lock kernel/locking/lockdep.c:4649 [inline]
 mark_usage kernel/locking/lockdep.c:4574 [inline]
 __lock_acquire+0x1231/0x5e20 kernel/locking/lockdep.c:5098
 lock_acquire kernel/locking/lockdep.c:5761 [inline]
 lock_acquire+0x1b1/0x520 kernel/locking/lockdep.c:5726
 __raw_spin_lock include/linux/spinlock_api_smp.h:133 [inline]
 _raw_spin_lock+0x2e/0x40 kernel/locking/spinlock.c:154
 spin_lock include/linux/spinlock.h:350 [inline]
 btrfs_add_delayed_iput+0x128/0x390 fs/btrfs/inode.c:3490
 btrfs_put_ordered_extent fs/btrfs/ordered-data.c:559 [inline]
 btrfs_put_ordered_extent+0x2f6/0x610 fs/btrfs/ordered-data.c:547
 __btrfs_bio_end_io fs/btrfs/bio.c:118 [inline]
 __btrfs_bio_end_io+0x136/0x180 fs/btrfs/bio.c:112
 btrfs_orig_bbio_end_io+0x86/0x2b0 fs/btrfs/bio.c:163
 btrfs_simple_end_io+0x105/0x380 fs/btrfs/bio.c:378
 bio_endio+0x589/0x690 block/bio.c:1617
 req_bio_endio block/blk-mq.c:766 [inline]
 blk_update_request+0x5c5/0x1620 block/blk-mq.c:911
 blk_mq_end_request+0x59/0x680 block/blk-mq.c:1032
 lo_complete_rq+0x1c6/0x280 drivers/block/loop.c:370
 blk_complete_reqs+0xb3/0xf0 block/blk-mq.c:1110
 __do_softirq+0x1d4/0x905 kernel/softirq.c:553
 run_ksoftirqd kernel/softirq.c:921 [inline]
 run_ksoftirqd+0x31/0x60 kernel/softirq.c:913
 smpboot_thread_fn+0x659/0x9e0 kernel/smpboot.c:164
 kthread+0x344/0x440 kernel/kthread.c:389
 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:308
 </TASK>

Crashes (3):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2023/07/01 07:43 upstream a507db1d8fdc af3053d2 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream inconsistent lock state in btrfs_add_delayed_iput
2023/07/14 12:08 upstream 4b810bf037e5 d624500f .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 inconsistent lock state in btrfs_add_delayed_iput
2023/07/08 17:31 upstream 8689f4f2ea56 668cb1fa .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 inconsistent lock state in btrfs_add_delayed_iput
* Struck through repros no longer work on HEAD.