From: William Lee Irwin III Document the requirement to use a memory barrier prior to wake_up_bit(). Signed-off-by: Andrew Morton --- 25-akpm/kernel/wait.c | 7 +++++++ 1 files changed, 7 insertions(+) diff -puN kernel/wait.c~document-wake_up_bits-requirement-for-preceding-memory-barriers kernel/wait.c --- 25/kernel/wait.c~document-wake_up_bits-requirement-for-preceding-memory-barriers Tue Sep 21 14:38:08 2004 +++ 25-akpm/kernel/wait.c Tue Sep 21 14:38:08 2004 @@ -221,6 +221,13 @@ EXPORT_SYMBOL(__wake_up_bit); * is the part of the hashtable's accessor API that wakes up waiters * on a bit. For instance, if one were to have waiters on a bitflag, * one would call wake_up_bit() after clearing the bit. + * + * In order for this to function properly, as it uses waitqueue_active() + * internally, some kind of memory barrier must be done prior to calling + * this. Typically, this will be smp_mb__after_clear_bit(), but in some + * cases where bitflags are manipulated non-atomically under a lock, one + * may need to use a less regular barrier, such fs/inode.c's smp_mb(), + * because spin_unlock() does not guarantee a memory barrier. */ void fastcall wake_up_bit(void *word, int bit) { _