From: Zqiang Date: Thu, 31 Mar 2022 05:57:17 +0000 (+0800) Subject: workqueue: Restrict kworker in the offline CPU pool running on housekeeping CPUs X-Git-Tag: v5.19-rc1~160^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=10a5a651e3afc9b0b381f47e8930972e4e918397;p=thirdparty%2Flinux.git workqueue: Restrict kworker in the offline CPU pool running on housekeeping CPUs When a CPU is going offline, all workers on the CPU's pool will have their cpus_allowed cleared to cpu_possible_mask and can run on any CPUs including the isolated ones. Instead, set cpus_allowed to wq_unbound_cpumask so that the can avoid isolated CPUs. Signed-off-by: Zqiang Signed-off-by: Tejun Heo --- diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 0d2514b4ff0d2..4056f2a3f9d59 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -5001,7 +5001,7 @@ static void unbind_workers(int cpu) for_each_pool_worker(worker, pool) { kthread_set_per_cpu(worker->task, -1); - WARN_ON_ONCE(set_cpus_allowed_ptr(worker->task, cpu_possible_mask) < 0); + WARN_ON_ONCE(set_cpus_allowed_ptr(worker->task, wq_unbound_cpumask) < 0); } mutex_unlock(&wq_pool_attach_mutex);