rcu: Fix and comment ordering around wait_event()
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 24 Sep 2013 22:04:06 +0000 (15:04 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 3 Dec 2013 18:10:18 +0000 (10:10 -0800)
commit78e4bc34e5d966cfd95f1238565afc399d56225c
treee430291c48ec41b22e31865bf5aa13c4db87a3cb
parent6193c76aba8ec3cc5f083c35efbab9ed924125f6
rcu: Fix and comment ordering around wait_event()

It is all too easy to forget that wait_event() does not necessarily
imply a full memory barrier.  The case where it does not is where the
condition transitions to true just as wait_event() starts execution.
This is actually a feature: The standard use of wait_event() involves
locking, in which case the locks provide the needed ordering (you hold a
lock across the wake_up() and acquire that same lock after wait_event()
returns).

Given that I did forget that wait_event() does not necessarily imply a
full memory barrier in one case, this commit fixes that case.  This commit
also adds comments calling out the placement of existing memory barriers
relied on by wait_event() calls.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcu/torture.c
kernel/rcu/tree.c
kernel/rcu/tree_plugin.h