[GIT PULL] workqueue changes for v6.3-rc1

From: Tejun Heo
Date: Sun Feb 19 2023 - 18:18:18 EST


The following changes since commit 512dee0c00ad9e9c7ae9f11fc6743702ea40caff:

Merge tag 'x86-urgent-2023-01-04' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip (2023-01-04 12:11:29 -0800)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git/ tags/wq-for-6.3

for you to fetch changes up to c63a2e52d5e08f01140d7b76c08a78e15e801f03:

workqueue: Fold rebind_worker() within rebind_workers() (2023-01-13 07:50:40 -1000)

----------------------------------------------------------------
workqueue changes for v6.3-rc1

* When per-cpu workqueue workers expire after sitting idle for too long,
they used to wake up to the CPU that they're bound to to exit. This
unfortunately could cause unwanted disturbances on CPUs isolated for e.g.
RT applications. The worker exit path is restructured so that an existing
worker is unbound from its CPU before being woken up for the last time,
allowing it to migrate away from an isolated CPU for exiting.

* A couple debug improvements. Watchdog dump is made more compact and
workqueue now warns if used-after-free during the RCU grace period after
destroy_workqueue().

----------------------------------------------------------------
Lai Jiangshan (1):
workqueue: Protects wq_unbound_cpumask with wq_pool_attach_mutex

Paul E. McKenney (1):
workqueue: Make show_pwq() use run-length encoding

Richard Clark (1):
workqueue: Add a new flag to spot the potential UAF error

Valentin Schneider (5):
workqueue: Factorize unbind/rebind_workers() logic
workqueue: Convert the idle_timer to a timer + work_struct
workqueue: Don't hold any lock while rcuwait'ing for !POOL_MANAGER_ACTIVE
workqueue: Unbind kworkers before sending them to exit()
workqueue: Fold rebind_worker() within rebind_workers()

include/linux/workqueue.h | 1 +
kernel/workqueue.c | 280 ++++++++++++++++++++++++++++++++++------------
2 files changed, 210 insertions(+), 71 deletions(-)

--
tejun