Re: [PATCH] slow_work_execute() needs mb() before test_bit(SLOW_WORK_PENDING)

From: David Howells
Date: Thu Apr 16 2009 - 05:45:10 EST


Oleg Nesterov <oleg@xxxxxxxxxx> wrote:

> But why do we need the barrier before clear_bit(SLOW_WORK_EXECUTING) ?
> We do have one after test_and_clear_bit(SLOW_WORK_PENDING) above, and it
> should be enough, no?

No. There lock is covering work->ops->execute(work) too, and that is after
the clearance of SLOW_WORK_PENDING. The UNLOCK-class barrier must go between
execution and clearance of the execution lock bit.

David
--
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/