Re: Fw: [PATCH -mm] workqueue: debug possible endless loop in cancel_rearming_delayed_work

From: Jarek Poplawski
Date: Wed Apr 25 2007 - 08:22:43 EST


On Wed, Apr 25, 2007 at 02:20:38PM +0200, Jarek Poplawski wrote:
> 2 cents more...
...
> On Tue, Apr 24, 2007 at 10:55:37PM +0400, Oleg Nesterov wrote:
> > + do {
> > + retry = 1;

Of course this'll be shorter:

retry = 0;

> > + spin_lock_irq(&cwq->lock);
> > + /* CPU_DEAD in progress may change cwq */
> > + if (likely(cwq == get_wq_data(work))) {
> > + list_del_init(&work->entry);
> > + __set_bit(WORK_STRUCT_PENDING, work_data_bits(work));
> > + retry = try_to_del_timer_sync(&dwork->timer) < 0;
> > + }
> > + spin_unlock_irq(&cwq->lock);
> > + } while (unlikely(retry));
...

Jarek P.
-
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/