• Tejun Heo's avatar
    workqueue: fix spurious CPU locality WARN from process_one_work() · 6fec10a1
    Tejun Heo authored
    25511a47 "workqueue: reimplement CPU online rebinding to handle idle
    workers" added CPU locality sanity check in process_one_work().  It
    triggers if a worker is executing on a different CPU without UNBOUND
    or REBIND set.
    
    This works for all normal workers but rescuers can trigger this
    spuriously when they're serving the unbound or a disassociated
    global_cwq - rescuers don't have either flag set and thus its
    gcwq->cpu can be a different value including %WORK_CPU_UNBOUND.
    
    Fix it by additionally testing %GCWQ_DISASSOCIATED.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reported-by: default avatar"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
    LKML-Refence: <20120721213656.GA7783@linux.vnet.ibm.com>
    6fec10a1
workqueue.c 102 KB