======================================================
WARNING: possible circular locking dependency detected
syzkaller #0 Not tainted
------------------------------------------------------
kworker/u9:9/1118 is trying to acquire lock:
ffff888035636450 (&disk->zone_revalidate_mutex){+.+.}-{4:4}, at: blk_revalidate_disk_zones+0x1c4/0x15b0

but task is already holding lock:
ffff88810a805d80 (&q->q_usage_counter(io)#82){++++}-{0:0}, at: nvme_update_ns_info+0x3ac/0x1200

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #3 (&q->q_usage_counter(io)#82){++++}-{0:0}:
       blk_alloc_queue+0x544/0x690
       __blk_alloc_disk+0xe3/0x1d0
       nvme_mpath_alloc_disk+0x5c2/0x8b0
       nvme_scan_ns+0x2e22/0x46c0
       async_run_entry_fn+0x9d/0x430
       process_scheduled_works+0xc3d/0x1630
       worker_thread+0xa47/0xfb0
       kthread+0x38b/0x480
       ret_from_fork+0x514/0xb70
       ret_from_fork_asm+0x1a/0x30

-> #2 (fs_reclaim){+.+.}-{0:0}:
       fs_reclaim_acquire+0x71/0x100
       __kmalloc_cache_node_noprof+0x66/0x620
       init_rescuer+0x167/0x530
       workqueue_init+0x214/0x680
       kernel_init_freeable+0x26b/0x3e0
       kernel_init+0x22/0x1d0
       ret_from_fork+0x514/0xb70
       ret_from_fork_asm+0x1a/0x30

-> #1 (wq_pool_mutex){+.+.}-{4:4}:
       __mutex_lock+0x19d/0x1550
       __alloc_workqueue+0xa4f/0x1fe0
       alloc_workqueue_noprof+0xe3/0x210
       blk_revalidate_disk_zones+0x879/0x15b0
       null_add_dev+0x12b8/0x1d70
       nullb_device_power_store+0x240/0x380
       configfs_write_iter+0x337/0x430
       vfs_write+0x612/0xba0
       ksys_write+0x150/0x270
       do_syscall_64+0x166/0x520
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #0 (&disk->zone_revalidate_mutex){+.+.}-{4:4}:
       __lock_acquire+0x164c/0x2de0
       lock_acquire+0x115/0x350
       __mutex_lock+0x19d/0x1550
       blk_revalidate_disk_zones+0x1c4/0x15b0
       nvme_mpath_revalidate_zones+0x106/0x1c0
       nvme_update_ns_info+0x984/0x1200
       nvme_scan_ns+0x34c1/0x46c0
       async_run_entry_fn+0x9d/0x430
       process_scheduled_works+0xc3d/0x1630
       worker_thread+0xa47/0xfb0
       kthread+0x38b/0x480
       ret_from_fork+0x514/0xb70
       ret_from_fork_asm+0x1a/0x30

other info that might help us debug this:

Chain exists of:
  &disk->zone_revalidate_mutex --> fs_reclaim --> &q->q_usage_counter(io)#82

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&q->q_usage_counter(io)#82);
                               lock(fs_reclaim);
                               lock(&q->q_usage_counter(io)#82);
  lock(&disk->zone_revalidate_mutex);

 *** DEADLOCK ***

locks held by kworker/u9:9/1118: 4, last CPU#0:
 #0: ffff8881012f5140 ((wq_completion)async){+.+.}-{0:0}, at: process_scheduled_works+0x97a/0x1630
 #1: ffffc90007207c40 ((work_completion)(&entry->work)){+.+.}-{0:0}, at: process_scheduled_works+0x97a/0x1630
 #2: ffff88810a805d80 (&q->q_usage_counter(io)#82){++++}-{0:0}, at: nvme_update_ns_info+0x3ac/0x1200
 #3: ffff88810a805db8 (&q->q_usage_counter(queue)#63){+.+.}-{0:0}, at: nvme_update_ns_info+0x3ac/0x1200

stack backtrace:
CPU: 0 UID: 0 PID: 1118 Comm: kworker/u9:9 Not tainted syzkaller #0 PREEMPT(lazy) 
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
Workqueue: async async_run_entry_fn
Call Trace:
 <TASK>
 dump_stack_lvl+0xe8/0x150
 print_circular_bug+0x2e2/0x300
 check_noncircular+0x12f/0x150
 __lock_acquire+0x164c/0x2de0
 lock_acquire+0x115/0x350
 __mutex_lock+0x19d/0x1550
 blk_revalidate_disk_zones+0x1c4/0x15b0
 nvme_mpath_revalidate_zones+0x106/0x1c0
 nvme_update_ns_info+0x984/0x1200
 nvme_scan_ns+0x34c1/0x46c0
 async_run_entry_fn+0x9d/0x430
 process_scheduled_works+0xc3d/0x1630
 worker_thread+0xa47/0xfb0
 kthread+0x38b/0x480
 ret_from_fork+0x514/0xb70
 ret_from_fork_asm+0x1a/0x30
 </TASK>
nvmet_fc: {0}: Create Association LS failed: Association Allocation Failed
