Skip to content
Commit bd31fb92 authored by Tejun Heo's avatar Tejun Heo Committed by Sasha Levin
Browse files

workqueue: RCU protect wq->dfl_pwq and implement accessors for it



[ Upstream commit 9f66cff2 ]

wq->cpu_pwq is RCU protected but wq->dfl_pwq isn't. This is okay because
currently wq->dfl_pwq is used only accessed to install it into wq->cpu_pwq
which doesn't require RCU access. However, we want to be able to access
wq->dfl_pwq under RCU in the future to access its __pod_cpumask and the code
can be made easier to read by making the two pwq fields behave in the same
way.

- Make wq->dfl_pwq RCU protected.

- Add unbound_pwq_slot() and unbound_pwq() which can access both ->dfl_pwq
  and ->cpu_pwq. The former returns the double pointer that can be used
  access and update the pwqs. The latter performs locking check and
  dereferences the double pointer.

- pwq accesses and updates are converted to use unbound_pwq[_slot]().

Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Reviewed-by: default avatarLai Jiangshan <jiangshanlai@gmail.com>
Stable-dep-of: 5797b1c1 ("workqueue: Implement system-wide nr_active enforcement for unbound workqueues")
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 5f99fee6
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment