From 3d50d091e6fcf53296369ec63441a1076a4c0bc8 Mon Sep 17 00:00:00 2001 From: "Paul E. McKenney" Date: Thu, 12 Jan 2012 17:21:20 -0800 Subject: [PATCH] --- yaml --- r: 288565 b: refs/heads/master c: 5e1ee6e1016763812018bf5c5e966992821dc47e h: refs/heads/master i: 288563: b1b82f3f6ca45be27baba1bdf2f347574153973a v: v3 --- [refs] | 2 +- trunk/include/linux/rcupdate.h | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 5cadd52b97e2..0314635f0a42 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 50406b98b6372e7de21d903d2cf3914e9d64e094 +refs/heads/master: 5e1ee6e1016763812018bf5c5e966992821dc47e diff --git a/trunk/include/linux/rcupdate.h b/trunk/include/linux/rcupdate.h index 6df0ae197810..f409529ff35a 100644 --- a/trunk/include/linux/rcupdate.h +++ b/trunk/include/linux/rcupdate.h @@ -484,6 +484,13 @@ static inline void rcu_preempt_sleep_check(void) * NULL. Although rcu_access_pointer() may also be used in cases where * update-side locks prevent the value of the pointer from changing, you * should instead use rcu_dereference_protected() for this use case. + * + * It is also permissible to use rcu_access_pointer() when read-side + * access to the pointer was removed at least one grace period ago, as + * is the case in the context of the RCU callback that is freeing up + * the data, or after a synchronize_rcu() returns. This can be useful + * when tearing down multi-linked structures after a grace period + * has elapsed. */ #define rcu_access_pointer(p) __rcu_access_pointer((p), __rcu)