]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
nvme-tcp: Use WQ_PERCPU explicitly if wq_unbound is false.
authorKuniyuki Iwashima <kuniyu@google.com>
Sat, 30 May 2026 08:10:57 +0000 (08:10 +0000)
committerKeith Busch <kbusch@kernel.org>
Tue, 2 Jun 2026 10:46:27 +0000 (03:46 -0700)
Since commit 21c05ca88a54 ("workqueue: Add warnings and ensure
one among WQ_PERCPU or WQ_UNBOUND is present"), we must explicitly
set WQ_PERCPU or WQ_UNBOUND when creating workqueue.

nvme_tcp_init_module() sets WQ_UNBOUND when the module param
wq_unbound is set, but otherwise, WQ_PERCPU is missing, triggering
the warning below:

  workqueue: nvme_tcp_wq is using neither WQ_PERCPU or WQ_UNBOUND. Setting WQ_PERCPU.
  WARNING: kernel/workqueue.c:5856 at __alloc_workqueue+0x1d02/0x2070 kernel/workqueue.c:5855, CPU#0: swapper/0/1

Let's set WQ_PERCPU if wq_unbound is false.

Reported-by: syzbot+d078cba4418e65f61984@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/all/6a1a9a86.323e8352.141b09.0001.GAE@google.com/
Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/host/tcp.c

index 0552aa8a1150d79565c5cb19f06b78d18e286058..6241e71130c4f4a3d7e1be66a2955cffdfb534c0 100644 (file)
@@ -3053,6 +3053,8 @@ static int __init nvme_tcp_init_module(void)
 
        if (wq_unbound)
                wq_flags |= WQ_UNBOUND;
+       else
+               wq_flags |= WQ_PERCPU;
 
        nvme_tcp_wq = alloc_workqueue("nvme_tcp_wq", wq_flags, 0);
        if (!nvme_tcp_wq)