diff options
| -rw-r--r-- | Documentation/RCU/checklist.txt | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt index 6e253407b3dc..accfe2f5247d 100644 --- a/Documentation/RCU/checklist.txt +++ b/Documentation/RCU/checklist.txt | |||
| @@ -298,3 +298,15 @@ over a rather long period of time, but improvements are always welcome! | |||
| 298 | 298 | ||
| 299 | Note that, rcu_assign_pointer() and rcu_dereference() relate to | 299 | Note that, rcu_assign_pointer() and rcu_dereference() relate to |
| 300 | SRCU just as they do to other forms of RCU. | 300 | SRCU just as they do to other forms of RCU. |
| 301 | |||
| 302 | 15. The whole point of call_rcu(), synchronize_rcu(), and friends | ||
| 303 | is to wait until all pre-existing readers have finished before | ||
| 304 | carrying out some otherwise-destructive operation. It is | ||
| 305 | therefore critically important to -first- remove any path | ||
| 306 | that readers can follow that could be affected by the | ||
| 307 | destructive operation, and -only- -then- invoke call_rcu(), | ||
| 308 | synchronize_rcu(), or friends. | ||
| 309 | |||
| 310 | Because these primitives only wait for pre-existing readers, | ||
| 311 | it is the caller's responsibility to guarantee safety to | ||
| 312 | any subsequent readers. | ||
