workqueue: Always queue work items to the newest PWQ for order workqueues
authorLai Jiangshan <jiangshan.ljs@antgroup.com>
Wed, 3 Jul 2024 09:27:41 +0000 (17:27 +0800)
committerTejun Heo <tj@kernel.org>
Mon, 15 Jul 2024 04:20:19 +0000 (18:20 -1000)
commit58629d4871e8eb2c385b16a73a8451669db59f39
treeb8df40049d0db437705e08cf9e2bab2a45c2ab99
parentb2b1f9338400de0fb65e2ff5fab1b5617dcb5a97
workqueue: Always queue work items to the newest PWQ for order workqueues

To ensure non-reentrancy, __queue_work() attempts to enqueue a work
item to the pool of the currently executing worker. This is not only
unnecessary for an ordered workqueue, where order inherently suggests
non-reentrancy, but it could also disrupt the sequence if the item is
not enqueued on the newest PWQ.

Just queue it to the newest PWQ and let order management guarantees
non-reentrancy.

Signed-off-by: Lai Jiangshan <jiangshan.ljs@antgroup.com>
Fixes: 4c065dbce1e8 ("workqueue: Enable unbound cpumask update on ordered workqueues")
Cc: stable@vger.kernel.org # v6.9+
Signed-off-by: Tejun Heo <tj@kernel.org>
(cherry picked from commit 74347be3edfd11277799242766edf844c43dd5d3)
kernel/workqueue.c