possible deadlock in location_store

Status: upstream: reported C repro on 2026/09/03 20:59
Subsystems: kernfs
[Documentation on labels]
Reported-by: syzbot+ab46e65f9ffd10729c79@syzkaller.appspotmail.com
First crash: 7h33m, last: 3h50m
Discussions (1)
Title Replies (including bot) Last reply
[syzbot] [kernfs?] possible deadlock in location_store 0 (1) 2026/09/03 20:59

Sample crash report:
======================================================
WARNING: possible circular locking dependency detected
syzkaller #0 Not tainted
------------------------------------------------------
syz.0.59/5099 is trying to acquire lock:
ffff0000d0d54358 (&mddev->reconfig_mutex){+.+.}-{4:4}, at: mddev_lock drivers/md/md.h:713 [inline]
ffff0000d0d54358 (&mddev->reconfig_mutex){+.+.}-{4:4}, at: mddev_suspend_and_lock drivers/md/md.h:1019 [inline]
ffff0000d0d54358 (&mddev->reconfig_mutex){+.+.}-{4:4}, at: location_store+0xb8/0x938 drivers/md/md-bitmap.c:2636

but task is already holding lock:
ffff0000d04efb48 (kn->active#62){++++}-{0:0}, at: kernfs_get_active_of fs/kernfs/file.c:73 [inline]
ffff0000d04efb48 (kn->active#62){++++}-{0:0}, at: kernfs_fop_write_iter+0x1f0/0x3b8 fs/kernfs/file.c:337

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #1 (kn->active#62){++++}-{0:0}:
       kernfs_drain+0x1cc/0x4d0 fs/kernfs/dir.c:532
       __kernfs_remove+0x354/0x718 fs/kernfs/dir.c:1579
       kernfs_remove_by_name_ns+0x70/0xd0 fs/kernfs/dir.c:1797
       kernfs_remove_by_name include/linux/kernfs.h:644 [inline]
       remove_files+0x90/0x184 fs/sysfs/group.c:28
       sysfs_remove_group+0x98/0x160 fs/sysfs/group.c:328
       md_bitmap_sysfs_del drivers/md/md.c:707 [inline]
       md_bitmap_destroy+0x1b0/0x230 drivers/md/md.c:6635
       __md_stop+0x54/0x154 drivers/md/md.c:7089
       do_md_stop+0x284/0xe6c drivers/md/md.c:7193
       array_state_store+0x6ac/0xce8 drivers/md/md.c:-1
       md_attr_store+0x304/0x438 drivers/md/md.c:6158
       sysfs_kf_write+0xe0/0x108 fs/sysfs/file.c:145
       kernfs_fop_write_iter+0x260/0x3b8 fs/kernfs/file.c:345
       new_sync_write fs/read_write.c:595 [inline]
       vfs_write+0x51c/0xa0c fs/read_write.c:687
       ksys_write+0x12c/0x228 fs/read_write.c:739
       __do_sys_write fs/read_write.c:750 [inline]
       __se_sys_write fs/read_write.c:747 [inline]
       __arm64_sys_write+0x84/0x98 fs/read_write.c:747
       __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
       invoke_syscall+0x98/0x244 arch/arm64/kernel/syscall.c:49
       el0_svc_common+0xec/0x23c arch/arm64/kernel/syscall.c:121
       do_el0_svc+0x4c/0x5c arch/arm64/kernel/syscall.c:140
       el0_svc+0x64/0x260 arch/arm64/kernel/entry-common.c:758
       el0t_64_sync_handler+0x44/0x104 arch/arm64/kernel/entry-common.c:777
       el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:590

-> #0 (&mddev->reconfig_mutex){+.+.}-{4:4}:
       check_prev_add kernel/locking/lockdep.c:3181 [inline]
       check_prevs_add kernel/locking/lockdep.c:3300 [inline]
       validate_chain kernel/locking/lockdep.c:3924 [inline]
       __lock_acquire+0x1600/0x2a6c kernel/locking/lockdep.c:5254
       lock_acquire+0x150/0x370 kernel/locking/lockdep.c:5908
       __mutex_lock_common kernel/locking/mutex.c:646 [inline]
       __mutex_lock+0x164/0xf14 kernel/locking/mutex.c:821
       mutex_lock_interruptible_nested+0x24/0x30 kernel/locking/mutex.c:899
       mddev_lock drivers/md/md.h:713 [inline]
       mddev_suspend_and_lock drivers/md/md.h:1019 [inline]
       location_store+0xb8/0x938 drivers/md/md-bitmap.c:2636
       md_attr_store+0x304/0x438 drivers/md/md.c:6158
       sysfs_kf_write+0xe0/0x108 fs/sysfs/file.c:145
       kernfs_fop_write_iter+0x260/0x3b8 fs/kernfs/file.c:345
       new_sync_write fs/read_write.c:595 [inline]
       vfs_write+0x51c/0xa0c fs/read_write.c:687
       ksys_write+0x12c/0x228 fs/read_write.c:739
       __do_sys_write fs/read_write.c:750 [inline]
       __se_sys_write fs/read_write.c:747 [inline]
       __arm64_sys_write+0x84/0x98 fs/read_write.c:747
       __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
       invoke_syscall+0x98/0x244 arch/arm64/kernel/syscall.c:49
       el0_svc_common+0xec/0x23c arch/arm64/kernel/syscall.c:121
       do_el0_svc+0x4c/0x5c arch/arm64/kernel/syscall.c:140
       el0_svc+0x64/0x260 arch/arm64/kernel/entry-common.c:758
       el0t_64_sync_handler+0x44/0x104 arch/arm64/kernel/entry-common.c:777
       el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:590

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  rlock(kn->active#62);
                               lock(&mddev->reconfig_mutex);
                               lock(kn->active#62);
  lock(&mddev->reconfig_mutex);

 *** DEADLOCK ***

locks held by syz.0.59/5099: 4, last CPU#1:
 #0: ffff0000d7577970 (&f->f_pos_lock){+.+.}-{4:4}, at: fdget_pos+0x100/0x144 fs/file.c:1259
 #1: ffff0000c5cac460 (sb_writers#6){.+.+}-{0:0}, at: file_start_write include/linux/fs.h:2753 [inline]
 #1: ffff0000c5cac460 (sb_writers#6){.+.+}-{0:0}, at: vfs_write+0x248/0xa0c fs/read_write.c:683
 #2: ffff0000d89ad480 (&of->mutex){+.+.}-{4:4}, at: kernfs_fop_write_iter+0x1b0/0x3b8 fs/kernfs/file.c:336
 #3: ffff0000d04efb48 (kn->active#62){++++}-{0:0}, at: kernfs_get_active_of fs/kernfs/file.c:73 [inline]
 #3: ffff0000d04efb48 (kn->active#62){++++}-{0:0}, at: kernfs_fop_write_iter+0x1f0/0x3b8 fs/kernfs/file.c:337

stack backtrace:
CPU: 1 UID: 0 PID: 5099 Comm: syz.0.59 Not tainted syzkaller #0 PREEMPT 
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/14/2026
Call trace:
 show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:499 (C)
 __dump_stack+0x30/0x40 lib/dump_stack.c:94
 dump_stack_lvl+0xd8/0x12c lib/dump_stack.c:120
 dump_stack+0x1c/0x28 lib/dump_stack.c:129
 print_circular_bug+0x328/0x330 kernel/locking/lockdep.c:2059
 check_noncircular+0x158/0x174 kernel/locking/lockdep.c:2191
 check_prev_add kernel/locking/lockdep.c:3181 [inline]
 check_prevs_add kernel/locking/lockdep.c:3300 [inline]
 validate_chain kernel/locking/lockdep.c:3924 [inline]
 __lock_acquire+0x1600/0x2a6c kernel/locking/lockdep.c:5254
 lock_acquire+0x150/0x370 kernel/locking/lockdep.c:5908
 __mutex_lock_common kernel/locking/mutex.c:646 [inline]
 __mutex_lock+0x164/0xf14 kernel/locking/mutex.c:821
 mutex_lock_interruptible_nested+0x24/0x30 kernel/locking/mutex.c:899
 mddev_lock drivers/md/md.h:713 [inline]
 mddev_suspend_and_lock drivers/md/md.h:1019 [inline]
 location_store+0xb8/0x938 drivers/md/md-bitmap.c:2636
 md_attr_store+0x304/0x438 drivers/md/md.c:6158
 sysfs_kf_write+0xe0/0x108 fs/sysfs/file.c:145
 kernfs_fop_write_iter+0x260/0x3b8 fs/kernfs/file.c:345
 new_sync_write fs/read_write.c:595 [inline]
 vfs_write+0x51c/0xa0c fs/read_write.c:687
 ksys_write+0x12c/0x228 fs/read_write.c:739
 __do_sys_write fs/read_write.c:750 [inline]
 __se_sys_write fs/read_write.c:747 [inline]
 __arm64_sys_write+0x84/0x98 fs/read_write.c:747
 __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
 invoke_syscall+0x98/0x244 arch/arm64/kernel/syscall.c:49
 el0_svc_common+0xec/0x23c arch/arm64/kernel/syscall.c:121
 do_el0_svc+0x4c/0x5c arch/arm64/kernel/syscall.c:140
 el0_svc+0x64/0x260 arch/arm64/kernel/entry-common.c:758
 el0t_64_sync_handler+0x44/0x104 arch/arm64/kernel/entry-common.c:777
 el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:590

Crashes (10):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2026/09/03 16:42 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci cee9395acd80 6a988719 .config console log report syz / log C [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 possible deadlock in location_store
2026/09/03 16:53 upstream 940de590b839 6a988719 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-smack-root possible deadlock in location_store
2026/09/03 15:37 upstream 940de590b839 6a988719 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-root possible deadlock in location_store
2026/09/03 15:29 upstream 940de590b839 6a988719 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-root possible deadlock in location_store
2026/09/03 15:37 upstream 940de590b839 d2e5fb95 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in location_store
2026/09/03 19:12 linux-next 32b6ef9a5d0e 6a988719 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-linux-next-kasan-gce-root possible deadlock in location_store
2026/09/03 15:37 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci cee9395acd80 6a988719 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 possible deadlock in location_store
2026/09/03 15:36 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci cee9395acd80 6a988719 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 possible deadlock in location_store
2026/09/03 15:35 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci cee9395acd80 6a988719 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 possible deadlock in location_store
2026/09/03 15:33 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci cee9395acd80 6a988719 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 possible deadlock in location_store
* Struck through repros no longer work on HEAD.