workqueue: don't use wq_select_unbound_cpu() for bound works
wq_select_unbound_cpu() is designed for unbound workqueues only, but
it's wrongly called when using a bound workqueue too.
Fixing this ensures work queued to a bound workqueue with
cpu=WORK_CPU_UNBOUND always runs on the local CPU.
Before, that would happen only if wq_unbound_cpumask happened to include
it (likely almost always the case), or was empty, or we got lucky with
forced round-robin placement. So restricting
/sys/devices/virtual/workqueue/cpumask to a small subset of a machine's
CPUs would cause some bound work items to run unexpectedly there.
Fixes: ef557180447f ("workqueue: schedule WORK_CPU_UNBOUND work on wq_unbound_cpumask CPUs")
Cc: email@example.com # v4.5+
Signed-off-by: Hillf Danton <firstname.lastname@example.org>
[dj: massage changelog]
Signed-off-by: Daniel Jordan <email@example.com>
Cc: Tejun Heo <firstname.lastname@example.org>
Cc: Lai Jiangshan <email@example.com>
Signed-off-by: Tejun Heo <firstname.lastname@example.org>
1 file changed