Re: [PATCH 1/2] workqueue: Make alloc_workqueue() unbound by default
From: Marco Crivellari
Date: Thu Sep 03 2026 - 11:55:53 EST
Hi,
On Thu, Sep 3, 2026 at 5:22 PM Marco Crivellari
<marco.crivellari@xxxxxxxx> wrote:
> [...]
> if (unlikely(!(flags & (WQ_UNBOUND | WQ_PERCPU)))) {
> - WARN_ONCE(1, "workqueue: %s is using neither WQ_PERCPU or WQ_UNBOUND. "
> - "Setting WQ_PERCPU.\n", wq->name);
> - flags |= WQ_PERCPU;
> + pr_warn_once("workqueue: %s is using neither WQ_PERCPU or WQ_UNBOUND. "
> + "Setting WQ_UNBOUND.\n", wq->name);
> + flags |= WQ_UNBOUND;
> } else if (unlikely((flags & WQ_PERCPU) && (flags & WQ_UNBOUND))) {
> WARN_ONCE(1, "workqueue: %s uses both WQ_PERCPU and WQ_UNBOUND. "
> "Dropped WQ_PERCPU, keeping WQ_UNBOUND.\n", wq->name);
Please ignore the patch, I will send a v2.
This will cause issues because wq_size is calculated before:
5911 if (flags & WQ_UNBOUND)
5912 wq_size = struct_size(wq, node_nr_active, nr_node_ids + 1);
5913 else
5914 wq_size = sizeof(*wq);
5915
5916 wq = kzalloc_noprof(wq_size, GFP_KERNEL);
5917 if (!wq)
5918 return NULL;
Thanks, and sorry for the noise!
--
Marco Crivellari
SUSE Labs