Merge branch 'for-4.6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
Pull workqueue fix from Tejun Heo: "CPU hotplug callbacks can invoke DOWN_FAILED w/o preceding DOWN_PREPARE which can trigger a WARN_ON() in workqueue. The bug has been there for a very long time. It only triggers if CPU down fails at a specific point and I don't think it has adverse effects other than the warning messages. The fix is very low impact" * 'for-4.6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: workqueue: fix rebind bound workers warning
This commit is contained in:
commit
da92223908
|
@ -4554,6 +4554,17 @@ static void rebind_workers(struct worker_pool *pool)
|
||||||
pool->attrs->cpumask) < 0);
|
pool->attrs->cpumask) < 0);
|
||||||
|
|
||||||
spin_lock_irq(&pool->lock);
|
spin_lock_irq(&pool->lock);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XXX: CPU hotplug notifiers are weird and can call DOWN_FAILED
|
||||||
|
* w/o preceding DOWN_PREPARE. Work around it. CPU hotplug is
|
||||||
|
* being reworked and this can go away in time.
|
||||||
|
*/
|
||||||
|
if (!(pool->flags & POOL_DISASSOCIATED)) {
|
||||||
|
spin_unlock_irq(&pool->lock);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
pool->flags &= ~POOL_DISASSOCIATED;
|
pool->flags &= ~POOL_DISASSOCIATED;
|
||||||
|
|
||||||
for_each_pool_worker(worker, pool) {
|
for_each_pool_worker(worker, pool) {
|
||||||
|
|
Loading…
Reference in New Issue