Lines Matching full:that
14 bugs due to games that compilers and DEC Alpha can play.
18 DEC Alpha can load a pointer, dereference that pointer, and
19 return data preceding initialization that preceded the store of
31 There are a very few exceptions, namely that you can temporarily
35 bits of that pointer. This clearly means that the pointer
48 rights to substitute zero for this sort of expression, so that
53 and "b" are integers that happen to be equal, the expression
57 o If you are using RCU to protect JITed functions, so that the
62 using the same memory that was used by an earlier JITed function.
78 As before, the reason this is buggy is that relational operators
94 Because the compiler now knows that the value of "p" is exactly
103 can now be speculated, such that it might happen before the
109 compiler knows that the pointer is NULL, you had better
122 Note that if checks for being within an RCU read-side
127 o The comparison is against a pointer that references memory
128 that was initialized "a long time ago." The reason
129 this is safe is that even if misordering occurs, the
130 misordering will not affect the accesses that follow
142 o During some prior acquisition of the lock that
148 kernel's wide array of primitives that cause code to
156 That said, this situation can make certain RCU usage
163 so that a control dependency preserves the needed ordering.
164 That said, it is easy to get control dependencies wrong.
170 pointer. Note that the volatile cast in rcu_dereference()
173 However, please note that if the compiler knows that the
175 comparison will provide exactly the information that the
178 o Disable any value-speculation optimizations that your compiler
180 optimizations that take data collected from prior runs. Such
184 optimizations that leverage the branch-prediction hardware are
233 /* The compiler decides that q->c is same as p->c. */
239 You might be surprised that the outcome (r1 == 143 && r2 == 44) is possible,
242 that it loaded into "r2". The fact that this same result can occur due
245 But suppose that the reader needs a consistent view?
291 /* The compiler decides that q->c is same as p->c. */
306 from carrying out optimizations that otherwise might destroy the ordering
307 guarantees that RCU depends on. And the volatile cast in rcu_dereference()
343 Because the compiler can see all stores to "gp", it knows that the only
360 second argument with a constant value of 1 (or true, for that matter).
361 With that caution out of the way, here is some guidance for which
367 using rcu_read_lock(), anything that disables bottom halves,
368 anything that disables interrupts, or anything that disables
387 4. If the access is on the update side, so that it is always protected
397 to this code, that is the rare case when rcu_dereference_raw()
400 complex, except that a better approach in that case might be to