====================================================== WARNING: possible circular locking dependency detected syzkaller #0 Not tainted ------------------------------------------------------ syz.4.96/5193 is trying to acquire lock: ffff80008a857100 (disks_mutex){+.+.}-{4:4}, at: md_alloc+0x54/0xa18 drivers/md/md.c:6355 but task is already holding lock: ffff800089e4c0a0 (major_names_lock){+.+.}-{4:4}, at: blk_probe_dev+0x3c/0x158 block/genhd.c:885 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #2 (major_names_lock){+.+.}-{4:4}: __mutex_lock_common kernel/locking/mutex.c:646 [inline] __mutex_lock+0x164/0x10b8 kernel/locking/mutex.c:821 mutex_lock_nested+0x24/0x30 kernel/locking/mutex.c:874 blk_probe_dev+0x3c/0x158 block/genhd.c:885 blk_request_module+0x24/0xc0 block/genhd.c:901 blkdev_get_no_open+0x4c/0xf8 block/bdev.c:870 bdev_file_open_by_dev+0x80/0x1d8 block/bdev.c:1091 md_import_device+0xfc/0x354 drivers/md/md.c:3861 md_add_new_disk+0x35c/0x144c drivers/md/md.c:7681 md_ioctl+0x1d78/0x23e4 drivers/md/md.c:8525 blkdev_ioctl+0x574/0x904 block/ioctl.c:798 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:597 [inline] __se_sys_ioctl fs/ioctl.c:583 [inline] __arm64_sys_ioctl+0x154/0x1cc fs/ioctl.c:583 __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+0x60/0x1d8 arch/arm64/kernel/entry-common.c:796 el0t_64_sync_handler+0x44/0x104 arch/arm64/kernel/entry-common.c:815 el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:606 -> #1 (&mddev->reconfig_mutex){+.+.}-{4:4}: __mutex_lock_common kernel/locking/mutex.c:646 [inline] __mutex_lock+0x164/0x10b8 kernel/locking/mutex.c:821 mutex_lock_nested+0x24/0x30 kernel/locking/mutex.c:874 mddev_lock_nointr drivers/md/md.h:734 [inline] md_alloc+0x670/0xa18 drivers/md/md.c:6413 md_alloc_and_put+0x28/0x84 drivers/md/md.c:6452 add_named_array+0x214/0x390 drivers/md/md.c:-1 param_attr_store+0x144/0x1bc kernel/params.c:591 module_attr_store+0x6c/0x94 kernel/params.c:906 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+0x60/0x1d8 arch/arm64/kernel/entry-common.c:796 el0t_64_sync_handler+0x44/0x104 arch/arm64/kernel/entry-common.c:815 el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:606 -> #0 (disks_mutex){+.+.}-{4:4}: check_prev_add kernel/locking/lockdep.c:3209 [inline] check_prevs_add kernel/locking/lockdep.c:3328 [inline] validate_chain kernel/locking/lockdep.c:3952 [inline] __lock_acquire+0x1660/0x2b08 kernel/locking/lockdep.c:5288 lock_acquire+0x13c/0x320 kernel/locking/lockdep.c:5942 __mutex_lock_common kernel/locking/mutex.c:646 [inline] __mutex_lock+0x164/0x10b8 kernel/locking/mutex.c:821 mutex_lock_nested+0x24/0x30 kernel/locking/mutex.c:874 md_alloc+0x54/0xa18 drivers/md/md.c:6355 md_alloc_and_put+0x28/0x84 drivers/md/md.c:6452 md_probe+0x6c/0x88 drivers/md/md.c:6468 blk_probe_dev+0x12c/0x158 block/genhd.c:888 blk_request_module+0x24/0xc0 block/genhd.c:901 blkdev_get_no_open+0x4c/0xf8 block/bdev.c:870 bdev_file_open_by_dev+0x80/0x1d8 block/bdev.c:1091 swsusp_check+0x68/0x420 kernel/power/swap.c:1574 software_resume+0x50/0x418 kernel/power/hibernate.c:1031 resume_store+0x280/0x3e4 kernel/power/hibernate.c:1315 kobj_attr_store+0x6c/0x90 lib/kobject.c:842 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+0x60/0x1d8 arch/arm64/kernel/entry-common.c:796 el0t_64_sync_handler+0x44/0x104 arch/arm64/kernel/entry-common.c:815 el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:606 other info that might help us debug this: Chain exists of: disks_mutex --> &mddev->reconfig_mutex --> major_names_lock Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(major_names_lock); lock(&mddev->reconfig_mutex); lock(major_names_lock); lock(disks_mutex); *** DEADLOCK *** locks held by syz.4.96/5193: 6, last CPU#1: #0: ffff0000d88d69b0 (&f->f_pos_lock){+.+.}-{4:4}, at: fdget_pos+0x100/0x144 fs/file.c:1409 #1: ffff0000d1330478 (sb_writers#6){.+.+}-{0:0}, at: file_start_write include/linux/fs.h:2762 [inline] #1: ffff0000d1330478 (sb_writers#6){.+.+}-{0:0}, at: vfs_write+0x248/0xa0c fs/read_write.c:683 #2: ffff0000f325d880 (&of->mutex){+.+.}-{4:4}, at: kernfs_fop_write_iter+0x1b0/0x3b8 fs/kernfs/file.c:336 #3: ffff0000c1b58b48 (kn->active#63){.+.+}-{0:0}, at: kernfs_get_active_of fs/kernfs/file.c:73 [inline] #3: ffff0000c1b58b48 (kn->active#63){.+.+}-{0:0}, at: kernfs_fop_write_iter+0x1f0/0x3b8 fs/kernfs/file.c:337 #4: ffff800089953da0 (system_transition_mutex){+.+.}-{4:4}, at: software_resume+0x48/0x418 kernel/power/hibernate.c:1030 #5: ffff800089e4c0a0 (major_names_lock){+.+.}-{4:4}, at: blk_probe_dev+0x3c/0x158 block/genhd.c:885 stack backtrace: CPU: 1 UID: 0 PID: 5193 Comm: syz.4.96 Not tainted syzkaller #0 PREEMPT Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/23/2026 dump_backtrace(regs = 0000000000000000 tsk = 0000000000000000) 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:2087 check_noncircular+0x158/0x174 kernel/locking/lockdep.c:2219 check_prev_add kernel/locking/lockdep.c:3209 [inline] check_prevs_add kernel/locking/lockdep.c:3328 [inline] validate_chain kernel/locking/lockdep.c:3952 [inline] __lock_acquire+0x1660/0x2b08 kernel/locking/lockdep.c:5288 lock_acquire+0x13c/0x320 kernel/locking/lockdep.c:5942 __mutex_lock_common kernel/locking/mutex.c:646 [inline] __mutex_lock+0x164/0x10b8 kernel/locking/mutex.c:821 mutex_lock_nested+0x24/0x30 kernel/locking/mutex.c:874 md_alloc+0x54/0xa18 drivers/md/md.c:6355 md_alloc_and_put+0x28/0x84 drivers/md/md.c:6452 md_probe+0x6c/0x88 drivers/md/md.c:6468 blk_probe_dev+0x12c/0x158 block/genhd.c:888 blk_request_module+0x24/0xc0 block/genhd.c:901 blkdev_get_no_open+0x4c/0xf8 block/bdev.c:870 bdev_file_open_by_dev+0x80/0x1d8 block/bdev.c:1091 swsusp_check+0x68/0x420 kernel/power/swap.c:1574 software_resume+0x50/0x418 kernel/power/hibernate.c:1031 resume_store+0x280/0x3e4 kernel/power/hibernate.c:1315 kobj_attr_store+0x6c/0x90 lib/kobject.c:842 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+0x60/0x1d8 arch/arm64/kernel/entry-common.c:796 el0t_64_sync_handler+0x44/0x104 arch/arm64/kernel/entry-common.c:815 el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:606 debugfs: creating file 'md_d2'