infiniband sqz0: set active
infiniband sqz0: added lo
======================================================
WARNING: possible circular locking dependency detected
syzkaller #0 Not tainted
------------------------------------------------------
syz.2.5856/28438 is trying to acquire lock:
ffffffff8e85db88 (pcpu_alloc_mutex){+.+.}-{4:4}, at: pcpu_alloc_noprof+0x218/0x19c0

but task is already holding lock:
ffffffff8e5fcd08 (wq_pool_mutex){+.+.}-{4:4}, at: __alloc_workqueue+0x9ef/0x1e90

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #8 (wq_pool_mutex){+.+.}-{4:4}:
       __mutex_lock+0x19f/0x1300
       __alloc_workqueue+0x9ef/0x1e90
       alloc_workqueue_noprof+0xe3/0x210
       padata_alloc+0xc1/0x370
       pcrypt_init_padata+0x27/0x100
       pcrypt_init+0x60/0xc0
       do_one_initcall+0x250/0x8d0
       do_initcall_level+0x104/0x190
       do_initcalls+0x59/0xa0
       kernel_init_freeable+0x2a6/0x3e0
       kernel_init+0x1d/0x1d0
       ret_from_fork+0x51e/0xb90
       ret_from_fork_asm+0x1a/0x30

-> #7 (cpu_hotplug_lock){++++}-{0:0}:
       cpus_read_lock+0x42/0x160
       static_key_slow_inc+0x12/0x30
       nbd_genl_reconfigure+0x132f/0x1ea0
       genl_family_rcv_msg_doit+0x22a/0x330
       genl_rcv_msg+0x61c/0x7a0
       netlink_rcv_skb+0x232/0x4b0
       genl_rcv+0x28/0x40
       netlink_unicast+0x80f/0x9b0
       netlink_sendmsg+0x813/0xb40
       ____sys_sendmsg+0x972/0x9f0
       ___sys_sendmsg+0x2a5/0x360
       __x64_sys_sendmsg+0x1bd/0x2a0
       do_syscall_64+0x14d/0xf80
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #6 (&nsock->tx_lock){+.+.}-{4:4}:
       __mutex_lock+0x19f/0x1300
       nbd_queue_rq+0x37b/0x1100
       blk_mq_dispatch_rq_list+0xa70/0x1910
       __blk_mq_sched_dispatch_requests+0xdcc/0x1600
       blk_mq_sched_dispatch_requests+0xd7/0x190
       blk_mq_run_hw_queue+0x348/0x4f0
       blk_mq_dispatch_list+0xd16/0xe10
       blk_mq_flush_plug_list+0x48d/0x570
       __blk_flush_plug+0x3ed/0x4d0
       __submit_bio+0x28d/0x580
       submit_bio_noacct_nocheck+0x2f4/0xa70
       block_read_full_folio+0x599/0x830
       filemap_read_folio+0x137/0x3b0
       do_read_cache_folio+0x358/0x590
       read_part_sector+0xb6/0x2b0
       adfspart_check_ICS+0xa5/0xa40
       bdev_disk_changed+0x7ba/0x1550
       blkdev_get_whole+0x380/0x510
       bdev_open+0x31e/0xd30
       blkdev_open+0x470/0x610
       do_dentry_open+0x785/0x14e0
       vfs_open+0x3b/0x340
       path_openat+0x2e08/0x3860
       do_file_open+0x23e/0x4a0
       do_sys_openat2+0x113/0x200
       __x64_sys_openat+0x138/0x170
       do_syscall_64+0x14d/0xf80
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #5 (&cmd->lock){+.+.}-{4:4}:
       __mutex_lock+0x19f/0x1300
       nbd_queue_rq+0xc6/0x1100
       blk_mq_dispatch_rq_list+0xa70/0x1910
       __blk_mq_sched_dispatch_requests+0xdcc/0x1600
       blk_mq_sched_dispatch_requests+0xd7/0x190
       blk_mq_run_hw_queue+0x348/0x4f0
       blk_mq_dispatch_list+0xd16/0xe10
       blk_mq_flush_plug_list+0x48d/0x570
       __blk_flush_plug+0x3ed/0x4d0
       __submit_bio+0x28d/0x580
       submit_bio_noacct_nocheck+0x2f4/0xa70
       block_read_full_folio+0x599/0x830
       filemap_read_folio+0x137/0x3b0
       do_read_cache_folio+0x358/0x590
       read_part_sector+0xb6/0x2b0
       adfspart_check_ICS+0xa5/0xa40
       bdev_disk_changed+0x7ba/0x1550
       blkdev_get_whole+0x380/0x510
       bdev_open+0x31e/0xd30
       blkdev_open+0x470/0x610
       do_dentry_open+0x785/0x14e0
       vfs_open+0x3b/0x340
       path_openat+0x2e08/0x3860
       do_file_open+0x23e/0x4a0
       do_sys_openat2+0x113/0x200
       __x64_sys_openat+0x138/0x170
       do_syscall_64+0x14d/0xf80
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #4 (set->srcu){.+.+}-{0:0}:
       __synchronize_srcu+0xca/0x300
       elevator_switch+0x1e8/0x7a0
       elevator_change+0x2cc/0x450
       elevator_set_default+0x36c/0x430
       blk_register_queue+0x366/0x430
       __add_disk+0x677/0xd50
       add_disk_fwnode+0xfb/0x480
       nbd_dev_add+0x72c/0xb50
       nbd_init+0x168/0x1f0
       do_one_initcall+0x250/0x8d0
       do_initcall_level+0x104/0x190
       do_initcalls+0x59/0xa0
       kernel_init_freeable+0x2a6/0x3e0
       kernel_init+0x1d/0x1d0
       ret_from_fork+0x51e/0xb90
       ret_from_fork_asm+0x1a/0x30

-> #3 (&q->elevator_lock){+.+.}-{4:4}:
       __mutex_lock+0x19f/0x1300
       elevator_change+0x1b3/0x450
       elevator_set_none+0xb5/0x140
       blk_mq_update_nr_hw_queues+0x5e7/0x1a60
       nbd_start_device+0x17f/0xb10
       nbd_genl_connect+0x165b/0x1cf0
       genl_family_rcv_msg_doit+0x22a/0x330
       genl_rcv_msg+0x61c/0x7a0
       netlink_rcv_skb+0x232/0x4b0
       genl_rcv+0x28/0x40
       netlink_unicast+0x80f/0x9b0
       netlink_sendmsg+0x813/0xb40
       ____sys_sendmsg+0x972/0x9f0
       ___sys_sendmsg+0x2a5/0x360
       __x64_sys_sendmsg+0x1bd/0x2a0
       do_syscall_64+0x14d/0xf80
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #2 (&q->q_usage_counter(io)#49){++++}-{0:0}:
       blk_alloc_queue+0x546/0x680
       __blk_mq_alloc_disk+0x197/0x390
       nbd_dev_add+0x499/0xb50
       nbd_init+0x168/0x1f0
       do_one_initcall+0x250/0x8d0
       do_initcall_level+0x104/0x190
       do_initcalls+0x59/0xa0
       kernel_init_freeable+0x2a6/0x3e0
       kernel_init+0x1d/0x1d0
       ret_from_fork+0x51e/0xb90
       ret_from_fork_asm+0x1a/0x30

-> #1 (fs_reclaim){+.+.}-{0:0}:
       fs_reclaim_acquire+0x71/0x100
       prepare_alloc_pages+0x152/0x650
       __alloc_frozen_pages_noprof+0x12f/0x380
       __alloc_pages_noprof+0xa/0x30
       pcpu_populate_chunk+0x182/0xb30
       pcpu_alloc_noprof+0xc6c/0x19c0
       xt_percpu_counter_alloc+0x161/0x220
       translate_table+0x134a/0x2110
       ipt_register_table+0x11b/0x7f0
       iptable_nat_table_init+0x43/0x2e0
       xt_find_table_lock+0x30c/0x3e0
       xt_request_find_table_lock+0x26/0x100
       do_ipt_get_ctl+0x716/0x1240
       nf_getsockopt+0x26e/0x290
       ip_getsockopt+0x19e/0x230
       do_sock_getsockopt+0x2d3/0x3f0
       __x64_sys_getsockopt+0x1a4/0x240
       do_syscall_64+0x14d/0xf80
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #0 (pcpu_alloc_mutex){+.+.}-{4:4}:
       __lock_acquire+0x15a5/0x2cf0
       lock_acquire+0xf0/0x2e0
       __mutex_lock+0x19f/0x1300
       pcpu_alloc_noprof+0x218/0x19c0
       __alloc_workqueue+0xa81/0x1e90
       alloc_workqueue_noprof+0xe3/0x210
       ib_mad_init_device+0x944/0x20a0
       add_client_context+0x37c/0x7a0
       enable_device_and_get+0x19c/0x3e0
       ib_register_device+0x110f/0x13e0
       rxe_register_device+0x1e3/0x350
       rxe_net_add+0x81/0x110
       rxe_newlink+0xdd/0x190
       nldev_newlink+0x5bd/0x650
       rdma_nl_rcv+0x6d7/0xa10
       netlink_unicast+0x80f/0x9b0
       netlink_sendmsg+0x813/0xb40
       ____sys_sendmsg+0x972/0x9f0
       ___sys_sendmsg+0x2a5/0x360
       __x64_sys_sendmsg+0x1bd/0x2a0
       do_syscall_64+0x14d/0xf80
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

other info that might help us debug this:

Chain exists of:
  pcpu_alloc_mutex --> cpu_hotplug_lock --> wq_pool_mutex

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(wq_pool_mutex);
                               lock(cpu_hotplug_lock);
                               lock(wq_pool_mutex);
  lock(pcpu_alloc_mutex);

 *** DEADLOCK ***

6 locks held by syz.2.5856/28438:
 #0: ffffffff9a654578 (&rdma_nl_types[idx].sem){.+.+}-{4:4}, at: rdma_nl_rcv+0x32b/0xa10
 #1: ffffffff8f937150 (link_ops_rwsem){++++}-{4:4}, at: nldev_newlink+0x42a/0x650
 #2: ffffffff8f9289d0 (devices_rwsem){++++}-{4:4}, at: enable_device_and_get+0xff/0x3e0
 #3: ffffffff8f928cd0 (clients_rwsem){++++}-{4:4}, at: enable_device_and_get+0x165/0x3e0
 #4: ffff888029360638 (&device->client_data_rwsem){++++}-{4:4}, at: add_client_context+0x33c/0x7a0
 #5: ffffffff8e5fcd08 (wq_pool_mutex){+.+.}-{4:4}, at: __alloc_workqueue+0x9ef/0x1e90

stack backtrace:
CPU: 1 UID: 0 PID: 28438 Comm: syz.2.5856 Not tainted syzkaller #0 PREEMPT(full) 
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
Call Trace:
 <TASK>
 dump_stack_lvl+0xe8/0x150
 print_circular_bug+0x2e1/0x300
 check_noncircular+0x12e/0x150
 __lock_acquire+0x15a5/0x2cf0
 lock_acquire+0xf0/0x2e0
 __mutex_lock+0x19f/0x1300
 pcpu_alloc_noprof+0x218/0x19c0
 __alloc_workqueue+0xa81/0x1e90
 alloc_workqueue_noprof+0xe3/0x210
 ib_mad_init_device+0x944/0x20a0
 add_client_context+0x37c/0x7a0
 enable_device_and_get+0x19c/0x3e0
 ib_register_device+0x110f/0x13e0
 rxe_register_device+0x1e3/0x350
 rxe_net_add+0x81/0x110
 rxe_newlink+0xdd/0x190
 nldev_newlink+0x5bd/0x650
 rdma_nl_rcv+0x6d7/0xa10
 netlink_unicast+0x80f/0x9b0
 netlink_sendmsg+0x813/0xb40
 ____sys_sendmsg+0x972/0x9f0
 ___sys_sendmsg+0x2a5/0x360
 __x64_sys_sendmsg+0x1bd/0x2a0
 do_syscall_64+0x14d/0xf80
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f59ee79cdd9
Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 e8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007f59ef6dc028 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
RAX: ffffffffffffffda RBX: 00007f59eea15fa0 RCX: 00007f59ee79cdd9
RDX: 0000000000000810 RSI: 0000200000000240 RDI: 0000000000000005
RBP: 00007f59ee832d69 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 00007f59eea16038 R14: 00007f59eea15fa0 R15: 00007ffdc2fcdb98
 </TASK>
RDS/IB: sqz0: added
smc: adding ib device sqz0 with port count 1
smc:    ib device sqz0 port 1 has no pnetid
lo speed is unknown, defaulting to 1000
lo speed is unknown, defaulting to 1000
lo speed is unknown, defaulting to 1000
lo speed is unknown, defaulting to 1000
