Messages in this thread | | | Date | Sun, 11 Dec 2005 20:32:26 -0800 | From | Andrew Morton <> | Subject | Re: [PATCH] Fix RCU race in access of nohz_cpu_mask |
| |
"Paul E. McKenney" <paulmck@us.ibm.com> wrote: > > 1. wmb() guarantees that any writes preceding the wmb() will > be seen by the interconnect before any writes following the > wmb(). But this applies -only- to the writes executed by > the CPU doing the wmb(). > > 2. rmb() guarantees that any changes seen by the interconnect > preceding the rmb() will be seen by any reads following the > rmb(). Again, this applies only to reads executed by the > CPU doing the wmb(). However, the changes might be due to > any CPU. > > 3. mb() combines the guarantees made by rmb() and wmb().
So foo_mb() in preemptible code is potentially buggy.
I guess we assume that a context switch accidentally did enough of the right types of barriers for things to work OK. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |