block nbd4: shutting down sockets ============================================ WARNING: possible recursive locking detected 5.3.0-next-20190925 #0 Not tainted -------------------------------------------- kworker/u5:3/9080 is trying to acquire lock: ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: flush_workqueue+0xf7/0x14c0 kernel/workqueue.c:2771 but task is already holding lock: ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: __write_once_size include/linux/compiler.h:226 [inline] ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: arch_atomic64_set arch/x86/include/asm/atomic64_64.h:34 [inline] ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: atomic64_set include/asm-generic/atomic-instrumented.h:855 [inline] ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: atomic_long_set include/asm-generic/atomic-long.h:40 [inline] ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: set_work_data kernel/workqueue.c:620 [inline] ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: set_work_pool_and_clear_pending kernel/workqueue.c:647 [inline] ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: process_one_work+0x88b/0x1740 kernel/workqueue.c:2240 other info that might help us debug this: Possible unsafe locking scenario: CPU0 ---- lock((wq_completion)knbd4-recv); lock((wq_completion)knbd4-recv); *** DEADLOCK *** May be due to missing lock nesting notation 3 locks held by kworker/u5:3/9080: #0: ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: __write_once_size include/linux/compiler.h:226 [inline] #0: ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: arch_atomic64_set arch/x86/include/asm/atomic64_64.h:34 [inline] #0: ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: atomic64_set include/asm-generic/atomic-instrumented.h:855 [inline] #0: ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: atomic_long_set include/asm-generic/atomic-long.h:40 [inline] #0: ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: set_work_data kernel/workqueue.c:620 [inline] #0: ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: set_work_pool_and_clear_pending kernel/workqueue.c:647 [inline] #0: ffff888098d11928 ((wq_completion)knbd4-recv){+.+.}, at: process_one_work+0x88b/0x1740 kernel/workqueue.c:2240 #1: ffff8880950ffdc0 ((work_completion)(&args->work)){+.+.}, at: process_one_work+0x8c1/0x1740 kernel/workqueue.c:2244 #2: ffff8880a30d1578 (&nbd->config_lock){+.+.}, at: refcount_dec_and_mutex_lock lib/refcount.c:319 [inline] #2: ffff8880a30d1578 (&nbd->config_lock){+.+.}, at: refcount_dec_and_mutex_lock+0x56/0x90 lib/refcount.c:314 stack backtrace: CPU: 0 PID: 9080 Comm: kworker/u5:3 Not tainted 5.3.0-next-20190925 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Workqueue: knbd4-recv recv_work Call Trace: __dump_stack lib/dump_stack.c:77 [inline] dump_stack+0x172/0x1f0 lib/dump_stack.c:113 print_deadlock_bug kernel/locking/lockdep.c:2371 [inline] check_deadlock kernel/locking/lockdep.c:2412 [inline] validate_chain kernel/locking/lockdep.c:2955 [inline] __lock_acquire.cold+0x15d/0x385 kernel/locking/lockdep.c:3955 lock_acquire+0x190/0x410 kernel/locking/lockdep.c:4487 flush_workqueue+0x126/0x14c0 kernel/workqueue.c:2774 drain_workqueue+0x1b4/0x470 kernel/workqueue.c:2939 destroy_workqueue+0x74/0x760 kernel/workqueue.c:4335 nbd_config_put+0x3dd/0x870 drivers/block/nbd.c:1181 recv_work+0x19b/0x200 drivers/block/nbd.c:787 process_one_work+0x9af/0x1740 kernel/workqueue.c:2269 worker_thread+0x98/0xe40 kernel/workqueue.c:2415 kthread+0x361/0x430 kernel/kthread.c:255 ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:352