Re: [PATCH v3 2/2] workqueue: Add warnings and ensure one among WQ_PERCPU or WQ_UNBOUND is present
From: Tejun Heo
Date: Thu May 28 2026 - 12:32:48 EST
On Thu, May 28, 2026 at 06:01:59PM +0200, Marco Crivellari wrote:
...
> @@ -5850,6 +5850,23 @@ static struct workqueue_struct *__alloc_workqueue(const char *fmt,
> pr_warn_once("workqueue: name exceeds WQ_NAME_LEN. Truncating to: %s\n",
> wq->name);
>
> + /*
> + * One among WQ_PERCPU and WQ_UNBOUND must be set, but not both.
> + * - If neither is set, default to WQ_PERCPU
> + * - If both are set, default to WQ_UNBOUND
> + *
> + * This code can be removed after workqueue are unbound by default
> + */
> + if (!(flags & (WQ_UNBOUND | WQ_PERCPU))) {
> + pr_warn_ratelimited("workqueue: %s is using neither WQ_PERCPU or WQ_UNBOUND. "
> + "Setting WQ_PERCPU.\n", wq->name);
> + flags |= WQ_PERCPU;
> + } else if((flags & WQ_PERCPU) && (flags & WQ_UNBOUND)) {
> + pr_warn_ratelimited("workqueue: %s uses both WQ_PERCPU and WQ_UNBOUND. "
> + "Dropped WQ_PERCPU, keeping WQ_UNBOUND.\n", wq->name);
> + flags &= (~WQ_PERCPU);
> + }
Let's just WARN_ONCE() on these. These are outright bugs, right?
Thanks.
--
tejun