You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
workqueue: Make sure that wq_unbound_cpumask is never empty
JIRA: https://issues.redhat.com/browse/RHEL-21798
Conflicts: A merge conflict due to missing upstream commit fef59c9
("workqueue: Rename NUMA related names to use pod instead")
and two other subsequent workqueue commits.
commit 4a6c560
Author: Tejun Heo <[email protected]>
Date: Tue, 21 Nov 2023 11:39:36 -1000
workqueue: Make sure that wq_unbound_cpumask is never empty
During boot, depending on how the housekeeping and workqueue.unbound_cpus
masks are set, wq_unbound_cpumask can end up empty. Since 8639ece
("workqueue: Implement non-strict affinity scope for unbound workqueues"),
this may end up feeding -1 as a CPU number into scheduler leading to oopses.
BUG: unable to handle page fault for address: ffffffff8305e9c0
#PF: supervisor read access in kernel mode
#PF: error_code(0x0000) - not-present page
...
Call Trace:
<TASK>
select_idle_sibling+0x79/0xaf0
select_task_rq_fair+0x1cb/0x7b0
try_to_wake_up+0x29c/0x5c0
wake_up_process+0x19/0x20
kick_pool+0x5e/0xb0
__queue_work+0x119/0x430
queue_work_on+0x29/0x30
...
An empty wq_unbound_cpumask is a clear misconfiguration and already
disallowed once system is booted up. Let's warn on and ignore
unbound_cpumask restrictions which lead to no unbound cpus. While at it,
also remove now unncessary empty check on wq_unbound_cpumask in
wq_select_unbound_cpu().
Signed-off-by: Tejun Heo <[email protected]>
Reported-and-Tested-by: Yong He <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Fixes: 8639ece ("workqueue: Implement non-strict affinity scope for unbound workqueues")
Cc: [email protected] # v6.6+
Reviewed-by: Waiman Long <[email protected]>
Signed-off-by: Waiman Long <[email protected]>
0 commit comments