====================================================== WARNING: possible circular locking dependency detected syzkaller #0 Not tainted ------------------------------------------------------ kworker/1:0/21 is trying to acquire lock: ffff888061793918 (kn->active#484){++++}-{0:0}, at: kernfs_remove+0x1d/0x30 fs/kernfs/dir.c:1406 but task is already holding lock: ffffc90000db7d00 ((work_completion)(&mddev->del_work)#2){+.+.}-{0:0}, at: process_one_work+0x79e/0xff0 kernel/workqueue.c:2285 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #3 ((work_completion)(&mddev->del_work) #2){+.+.}-{0:0} : process_one_work+0x7ba/0xff0 kernel/workqueue.c:2286 worker_thread+0xad7/0x12a0 kernel/workqueue.c:2457 kthread+0x42e/0x520 kernel/kthread.c:334 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:287 -> #2 ((wq_completion)md_misc){+.+.}-{0:0}: flush_workqueue+0x16a/0x1390 kernel/workqueue.c:2830 __md_stop+0x190/0x2f0 drivers/md/md.c:6351 md_stop+0x7a/0xe0 drivers/md/md.c:6371 raid_dtr+0x4b/0x60 drivers/md/dm-raid.c:3323 dm_table_destroy+0x185/0x420 drivers/md/dm-table.c:195 table_load+0x5e6/0x760 drivers/md/dm-ioctl.c:1527 ctl_ioctl drivers/md/dm-ioctl.c:2032 [inline] dm_ctl_ioctl+0x947/0xd00 drivers/md/dm-ioctl.c:2054 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:874 [inline] __se_sys_ioctl+0xfa/0x170 fs/ioctl.c:860 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x4c/0xa0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x66/0xd0 -> #1 (&mddev->reconfig_mutex){+.+.}-{3:3}: __mutex_lock_common+0x1e5/0x2400 kernel/locking/mutex.c:596 __mutex_lock kernel/locking/mutex.c:729 [inline] mutex_lock_interruptible_nested+0x17/0x20 kernel/locking/mutex.c:765 mddev_lock drivers/md/md.h:543 [inline] chunk_size_store+0xb6/0x430 drivers/md/md.c:4318 md_attr_store+0xdd/0x130 drivers/md/md.c:5643 kernfs_fop_write_iter+0x3a8/0x500 fs/kernfs/file.c:296 call_write_iter include/linux/fs.h:2179 [inline] new_sync_write fs/read_write.c:507 [inline] vfs_write+0x748/0xd70 fs/read_write.c:594 ksys_write+0x153/0x260 fs/read_write.c:647 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x4c/0xa0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x66/0xd0 -> #0 (kn->active#484){++++}-{0:0} : check_prev_add kernel/locking/lockdep.c:3120 [inline] check_prevs_add kernel/locking/lockdep.c:3239 [inline] validate_chain kernel/locking/lockdep.c:3855 [inline] __lock_acquire+0x38f7/0x7d40 kernel/locking/lockdep.c:5120 lock_acquire+0x19f/0x400 kernel/locking/lockdep.c:5737 kernfs_drain fs/kernfs/dir.c:478 [inline] __kernfs_remove+0x5da/0xcb0 fs/kernfs/dir.c:1372 kernfs_remove+0x1d/0x30 fs/kernfs/dir.c:1406 __kobject_del+0xe0/0x2e0 lib/kobject.c:628 kobject_del+0x41/0x60 lib/kobject.c:651 mddev_delayed_delete+0x27/0x30 drivers/md/md.c:5686 process_one_work+0x867/0xff0 kernel/workqueue.c:2310 worker_thread+0xad7/0x12a0 kernel/workqueue.c:2457 kthread+0x42e/0x520 kernel/kthread.c:334 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:287 other info that might help us debug this: Chain exists of: kn->active#484 --> (wq_completion)md_misc --> (work_completion)(&mddev->del_work)#2 Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock((work_completion)(&mddev->del_work) #2); lock((wq_completion)md_misc); lock((work_completion)(&mddev->del_work)#2); lock( kn->active#484 ); *** DEADLOCK *** 2 locks held by kworker/1:0/21: #0: ffff888018b9a138 ((wq_completion)md_misc){+.+.}-{0:0} , at: process_one_work+0x75c/0xff0 kernel/workqueue.c:-1 #1: ffffc90000db7d00 ((work_completion)(&mddev->del_work) #2){+.+.}-{0:0} , at: process_one_work+0x79e/0xff0 kernel/workqueue.c:2285 stack backtrace: CPU: 1 PID: 21 Comm: kworker/1:0 Not tainted syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/07/2026 Workqueue: md_misc mddev_delayed_delete Call Trace: dump_stack_lvl+0x188/0x250 lib/dump_stack.c:106 check_noncircular+0x2f8/0x400 kernel/locking/lockdep.c:2178 check_prev_add kernel/locking/lockdep.c:3120 [inline] check_prevs_add kernel/locking/lockdep.c:3239 [inline] validate_chain kernel/locking/lockdep.c:3855 [inline] __lock_acquire+0x38f7/0x7d40 kernel/locking/lockdep.c:5120 lock_acquire+0x19f/0x400 kernel/locking/lockdep.c:5737 kernfs_drain fs/kernfs/dir.c:478 [inline] __kernfs_remove+0x5da/0xcb0 fs/kernfs/dir.c:1372 kernfs_remove+0x1d/0x30 fs/kernfs/dir.c:1406 __kobject_del+0xe0/0x2e0 lib/kobject.c:628 kobject_del+0x41/0x60 lib/kobject.c:651 mddev_delayed_delete+0x27/0x30 drivers/md/md.c:5686 process_one_work+0x867/0xff0 kernel/workqueue.c:2310 worker_thread+0xad7/0x12a0 kernel/workqueue.c:2457 kthread+0x42e/0x520 kernel/kthread.c:334 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:287 kobject: 'md' (ffff88801b7ac050): kobject_cleanup, parent 0000000000000000 kobject: 'md' (ffff88801b7ac050): calling ktype release kernfs bdi: removing device: '9:3': device_unregister kernfs runtime_status: removing kernfs control: removing kernfs runtime_suspended_time: removing kernfs runtime_active_time: removing kernfs autosuspend_delay_ms: removing kernfs power: removing kernfs subsystem: removing kernfs 9:3: removing kernfs uevent: removing kernfs read_ahead_kb: removing kernfs min_ratio: removing kernfs max_ratio: removing kernfs stable_pages_required: removing PM: Removing info for No Bus:9:3 kobject: '9:3' (ffff88802853d000): kobject_uevent_env kobject: '9:3' (ffff88802853d000): fill_kobj_path: path = '/devices/virtual/bdi/9:3' kernfs 9:3: removing kobject: '9:3' (ffff88802853d000): kobject_cleanup, parent 0000000000000000 kobject: '9:3' (ffff88802853d000): calling ktype release device: '9:3': device_create_release kobject: '9:3': free name kernfs enable: removing kernfs act_mask: removing kernfs pid: removing kernfs start_lba: removing kernfs end_lba: removing kernfs trace: removing kobject: 'queue' (ffff88802b5a80b8): kobject_uevent_env kobject: 'queue' (ffff88802b5a80b8): kobject_uevent_env: filter function caused the event to drop! kernfs queue: removing kobject: 'holders' (ffff88801fa32f80): kobject_cleanup, parent ffff888060490040 kobject: 'holders' (ffff88801fa32f80): auto cleanup kobject_del kernfs holders: removing kobject: 'holders' (ffff88801fa32f80): calling ktype release kobject: (ffff88801fa32f80): dynamic_kobj_release kobject: 'holders': free name kobject: 'slaves' (ffff8880249d4480): kobject_cleanup, parent ffff888060490040 kobject: 'slaves' (ffff8880249d4480): auto cleanup kobject_del kernfs slaves: removing kobject: 'slaves' (ffff8880249d4480): calling ktype release kobject: (ffff8880249d4480): dynamic_kobj_release kobject: 'slaves': free name kernfs md3: removing kernfs runtime_status: removing kernfs control: removing kernfs runtime_suspended_time: removing kernfs runtime_active_time: removing kernfs autosuspend_delay_ms: removing kernfs power: removing kernfs 9:3: removing kernfs dev: removing kernfs subsystem: removing kernfs md3: removing kernfs uevent: removing kernfs removable: removing kernfs range: removing kernfs ext_range: removing kernfs hidden: removing kernfs ro: removing kernfs size: removing kernfs alignment_offset: removing kernfs discard_alignment: removing kernfs capability: removing kernfs stat: removing kernfs inflight: removing kernfs events: removing kernfs events_async: removing kernfs events_poll_msecs: removing kernfs diskseq: removing kernfs make-it-fail: removing kernfs io-timeout-fail: removing kernfs format: removing kernfs tag_size: removing kernfs protection_interval_bytes: removing kernfs read_verify: removing kernfs write_generate: removing kernfs device_is_integrity_capable: removing kernfs integrity: removing PM: Removing info for No Bus:md3 kobject: 'md3' (ffff888060490040): kobject_uevent_env kobject: 'md3' (ffff888060490040): fill_kobj_path: path = '/devices/virtual/block/md3' kernfs md3: removing kobject: 'md3' (ffff888060490040): kobject_cleanup, parent 0000000000000000 kobject: 'md3' (ffff888060490040): calling ktype release kobject: 'queue' (ffff88802b5a80b8): kobject_cleanup, parent 0000000000000000 kobject: 'queue' (ffff88802b5a80b8): calling ktype release kobject: 'queue': free name kobject: 'md3': free name kobject: 'md': free name nf_conntrack: normal packet for ffff88807a66f500