============================================ WARNING: possible recursive locking detected 6.1.103-syzkaller #0 Not tainted -------------------------------------------- kworker/0:1H/52 is trying to acquire lock: ffff888059278d38 ((wq_completion)xillyusb){+.+.}-{0:0}, at: __flush_workqueue+0x157/0x1610 kernel/workqueue.c:2812 but task is already holding lock: ffff888059278d38 ((wq_completion)xillyusb){+.+.}-{0:0}, at: process_one_work+0x7a9/0x11d0 kernel/workqueue.c:2267 other info that might help us debug this: Possible unsafe locking scenario: CPU0 ---- lock((wq_completion)xillyusb); lock((wq_completion)xillyusb); *** DEADLOCK *** May be due to missing lock nesting notation 2 locks held by kworker/0:1H/52: #0: ffff888059278d38 ((wq_completion)xillyusb){+.+.}-{0:0}, at: process_one_work+0x7a9/0x11d0 kernel/workqueue.c:2267 #1: ffffc90000bd7d20 ((work_completion)(&xdev->wakeup_workitem)){+.+.}-{0:0}, at: process_one_work+0x7a9/0x11d0 kernel/workqueue.c:2267 stack backtrace: CPU: 0 PID: 52 Comm: kworker/0:1H Not tainted 6.1.103-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/27/2024 Workqueue: xillyusb wakeup_all Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x1e3/0x2cb lib/dump_stack.c:106 print_deadlock_bug kernel/locking/lockdep.c:2983 [inline] check_deadlock kernel/locking/lockdep.c:3026 [inline] validate_chain+0x4711/0x5950 kernel/locking/lockdep.c:3812 __lock_acquire+0x125b/0x1f80 kernel/locking/lockdep.c:5049 lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662 __flush_workqueue+0x170/0x1610 kernel/workqueue.c:2812 drain_workqueue+0xc5/0x390 kernel/workqueue.c:2977 destroy_workqueue+0x7b/0xae0 kernel/workqueue.c:4423 cleanup_dev drivers/char/xillybus/xillyusb.c:550 [inline] kref_put+0x100/0x180 include/linux/kref.h:65 process_one_work+0x8a9/0x11d0 kernel/workqueue.c:2292 worker_thread+0xa47/0x1200 kernel/workqueue.c:2439 kthread+0x28d/0x320 kernel/kthread.c:376 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295