Re: [PATCH v3] workqueue: lock cwq access in drain_workqueue

From: Tejun Heo
Date: Sat Sep 10 2011 - 23:49:14 EST


On Sat, Sep 10, 2011 at 11:39:53PM -0400, Thomas Tuttle wrote:
> Take cwq->gcwq->lock to avoid racing between drain_workqueue checking
> to make sure the workqueues are empty and cwq_dec_nr_in_flight
> decrementing and then incrementing nr_active when it activates a
> delayed work.
>
> We discovered this when a corner case in one of our drivers resulted in
> us trying to destroy a workqueue in which the remaining work would
> always requeue itself again in the same workqueue. We would hit this
> race condition and trip the BUG_ON on workqueue.c:3080.
>
> Signed-off-by: Thomas Tuttle <ttuttle@xxxxxxxxxxxx>
> Acked-by: Tejun Heo <tj@xxxxxxxxxx>
> Cc: stable@xxxxxxxxxx

Andrew, can you please route this patch through -mm? korg is still
down and wq is unlikely to receive many more patches in this cycle.

Thank you.

--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/