Skip to content
  • Tejun Heo's avatar
    workqueue: fix race condition in unbound workqueue free path · bc0caf09
    Tejun Heo authored
    8864b4e5
    
     ("workqueue: implement get/put_pwq()") implemented pwq
    (pool_workqueue) refcnting which frees workqueue when the last pwq
    goes away.  It determined whether it was the last pwq by testing
    wq->pwqs is empty.  Unfortunately, the test was done outside wq->mutex
    and multiple pwq release could race and try to free wq multiple times
    leading to oops.
    
    Test wq->pwqs emptiness while holding wq->mutex.
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    bc0caf09