|
@@ -508,40 +508,40 @@ static inline void rcu_preempt_sleep_check(void)
|
|
|
#endif /* #else #ifdef __CHECKER__ */
|
|
|
|
|
|
#define __rcu_access_pointer(p, space) \
|
|
|
- ({ \
|
|
|
- typeof(*p) *_________p1 = (typeof(*p)*__force )ACCESS_ONCE(p); \
|
|
|
- rcu_dereference_sparse(p, space); \
|
|
|
- ((typeof(*p) __force __kernel *)(_________p1)); \
|
|
|
- })
|
|
|
+({ \
|
|
|
+ typeof(*p) *_________p1 = (typeof(*p) *__force)ACCESS_ONCE(p); \
|
|
|
+ rcu_dereference_sparse(p, space); \
|
|
|
+ ((typeof(*p) __force __kernel *)(_________p1)); \
|
|
|
+})
|
|
|
#define __rcu_dereference_check(p, c, space) \
|
|
|
- ({ \
|
|
|
- typeof(*p) *_________p1 = (typeof(*p)*__force )ACCESS_ONCE(p); \
|
|
|
- rcu_lockdep_assert(c, "suspicious rcu_dereference_check() usage"); \
|
|
|
- rcu_dereference_sparse(p, space); \
|
|
|
- smp_read_barrier_depends(); \
|
|
|
- ((typeof(*p) __force __kernel *)(_________p1)); \
|
|
|
- })
|
|
|
+({ \
|
|
|
+ typeof(*p) *_________p1 = (typeof(*p) *__force)ACCESS_ONCE(p); \
|
|
|
+ rcu_lockdep_assert(c, "suspicious rcu_dereference_check() usage"); \
|
|
|
+ rcu_dereference_sparse(p, space); \
|
|
|
+ smp_read_barrier_depends(); /* Dependency order vs. p above. */ \
|
|
|
+ ((typeof(*p) __force __kernel *)(_________p1)); \
|
|
|
+})
|
|
|
#define __rcu_dereference_protected(p, c, space) \
|
|
|
- ({ \
|
|
|
- rcu_lockdep_assert(c, "suspicious rcu_dereference_protected() usage"); \
|
|
|
- rcu_dereference_sparse(p, space); \
|
|
|
- ((typeof(*p) __force __kernel *)(p)); \
|
|
|
- })
|
|
|
+({ \
|
|
|
+ rcu_lockdep_assert(c, "suspicious rcu_dereference_protected() usage"); \
|
|
|
+ rcu_dereference_sparse(p, space); \
|
|
|
+ ((typeof(*p) __force __kernel *)(p)); \
|
|
|
+})
|
|
|
|
|
|
#define __rcu_access_index(p, space) \
|
|
|
- ({ \
|
|
|
- typeof(p) _________p1 = ACCESS_ONCE(p); \
|
|
|
- rcu_dereference_sparse(p, space); \
|
|
|
- (_________p1); \
|
|
|
- })
|
|
|
+({ \
|
|
|
+ typeof(p) _________p1 = ACCESS_ONCE(p); \
|
|
|
+ rcu_dereference_sparse(p, space); \
|
|
|
+ (_________p1); \
|
|
|
+})
|
|
|
#define __rcu_dereference_index_check(p, c) \
|
|
|
- ({ \
|
|
|
- typeof(p) _________p1 = ACCESS_ONCE(p); \
|
|
|
- rcu_lockdep_assert(c, \
|
|
|
- "suspicious rcu_dereference_index_check() usage"); \
|
|
|
- smp_read_barrier_depends(); \
|
|
|
- (_________p1); \
|
|
|
- })
|
|
|
+({ \
|
|
|
+ typeof(p) _________p1 = ACCESS_ONCE(p); \
|
|
|
+ rcu_lockdep_assert(c, \
|
|
|
+ "suspicious rcu_dereference_index_check() usage"); \
|
|
|
+ smp_read_barrier_depends(); /* Dependency order vs. p above. */ \
|
|
|
+ (_________p1); \
|
|
|
+})
|
|
|
|
|
|
/**
|
|
|
* RCU_INITIALIZER() - statically initialize an RCU-protected global variable
|