@@ -364,46 +364,48 @@ static inline void rcu_preempt_sleep_check(void) { }
364364#define rcu_check_sparse (p , space )
365365#endif /* #else #ifdef __CHECKER__ */
366366
367+ #define __unrcu_pointer (p , local ) \
368+ ({ \
369+ typeof(*p) *local = (typeof(*p) *__force)(p); \
370+ rcu_check_sparse(p, __rcu); \
371+ ((typeof(*p) __force __kernel *)(local)); \
372+ })
367373/**
368374 * unrcu_pointer - mark a pointer as not being RCU protected
369375 * @p: pointer needing to lose its __rcu property
370376 *
371377 * Converts @p from an __rcu pointer to a __kernel pointer.
372378 * This allows an __rcu pointer to be used with xchg() and friends.
373379 */
374- #define unrcu_pointer (p ) \
375- ({ \
376- typeof(*p) *_________p1 = (typeof(*p) *__force)(p); \
377- rcu_check_sparse(p, __rcu); \
378- ((typeof(*p) __force __kernel *)(_________p1)); \
379- })
380+ #define unrcu_pointer (p ) __unrcu_pointer(p, __UNIQUE_ID(rcu))
380381
381- #define __rcu_access_pointer (p , space ) \
382+ #define __rcu_access_pointer (p , local , space ) \
382383({ \
383- typeof(*p) *_________p1 = (typeof(*p) *__force)READ_ONCE(p); \
384+ typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
384385 rcu_check_sparse(p, space); \
385- ((typeof(*p) __force __kernel *)(_________p1 )); \
386+ ((typeof(*p) __force __kernel *)(local )); \
386387})
387- #define __rcu_dereference_check (p , c , space ) \
388+ #define __rcu_dereference_check (p , local , c , space ) \
388389({ \
389390 /* Dependency order vs. p above. */ \
390- typeof (* p ) * ________p1 = (typeof (* p ) * __force )READ_ONCE (p ); \
391+ typeof (* p ) * local = (typeof (* p ) * __force )READ_ONCE (p ); \
391392 RCU_LOCKDEP_WARN (!(c ), "suspicious rcu_dereference_check() usage" ); \
392393 rcu_check_sparse (p , space ); \
393- ((typeof (* p ) __force __kernel * )(________p1 )); \
394+ ((typeof (* p ) __force __kernel * )(local )); \
394395})
395- #define __rcu_dereference_protected (p , c , space ) \
396+ #define __rcu_dereference_protected (p , local , c , space ) \
396397({ \
397398 RCU_LOCKDEP_WARN(!(c), "suspicious rcu_dereference_protected() usage"); \
398399 rcu_check_sparse(p, space); \
399400 ((typeof(*p) __force __kernel *)(p)); \
400401})
401- #define rcu_dereference_raw ( p ) \
402+ #define __rcu_dereference_raw ( p , local ) \
402403({ \
403404 /* Dependency order vs. p above. */ \
404- typeof (p ) ________p1 = READ_ONCE (p ); \
405- ((typeof (* p ) __force __kernel * )(________p1 )); \
405+ typeof (p ) local = READ_ONCE (p ); \
406+ ((typeof (* p ) __force __kernel * )(local )); \
406407})
408+ #define rcu_dereference_raw (p ) __rcu_dereference_raw(p, __UNIQUE_ID(rcu))
407409
408410/**
409411 * RCU_INITIALIZER() - statically initialize an RCU-protected global variable
@@ -490,7 +492,7 @@ do { \
490492 * when tearing down multi-linked structures after a grace period
491493 * has elapsed.
492494 */
493- #define rcu_access_pointer (p ) __rcu_access_pointer((p), __rcu)
495+ #define rcu_access_pointer (p ) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
494496
495497/**
496498 * rcu_dereference_check() - rcu_dereference with debug checking
@@ -526,7 +528,8 @@ do { \
526528 * annotated as __rcu.
527529 */
528530#define rcu_dereference_check (p , c ) \
529- __rcu_dereference_check((p), (c) || rcu_read_lock_held(), __rcu)
531+ __rcu_dereference_check((p), __UNIQUE_ID(rcu), \
532+ (c) || rcu_read_lock_held(), __rcu)
530533
531534/**
532535 * rcu_dereference_bh_check() - rcu_dereference_bh with debug checking
@@ -541,7 +544,8 @@ do { \
541544 * rcu_read_lock() but also rcu_read_lock_bh() into account.
542545 */
543546#define rcu_dereference_bh_check (p , c ) \
544- __rcu_dereference_check((p), (c) || rcu_read_lock_bh_held(), __rcu)
547+ __rcu_dereference_check((p), __UNIQUE_ID(rcu), \
548+ (c) || rcu_read_lock_bh_held(), __rcu)
545549
546550/**
547551 * rcu_dereference_sched_check() - rcu_dereference_sched with debug checking
@@ -556,7 +560,8 @@ do { \
556560 * only rcu_read_lock() but also rcu_read_lock_sched() into account.
557561 */
558562#define rcu_dereference_sched_check (p , c ) \
559- __rcu_dereference_check((p), (c) || rcu_read_lock_sched_held(), \
563+ __rcu_dereference_check((p), __UNIQUE_ID(rcu), \
564+ (c) || rcu_read_lock_sched_held(), \
560565 __rcu)
561566
562567/*
@@ -566,7 +571,8 @@ do { \
566571 * The no-tracing version of rcu_dereference_raw() must not call
567572 * rcu_read_lock_held().
568573 */
569- #define rcu_dereference_raw_check (p ) __rcu_dereference_check((p), 1, __rcu)
574+ #define rcu_dereference_raw_check (p ) \
575+ __rcu_dereference_check((p), __UNIQUE_ID(rcu), 1, __rcu)
570576
571577/**
572578 * rcu_dereference_protected() - fetch RCU pointer when updates prevented
@@ -585,7 +591,7 @@ do { \
585591 * but very ugly failures.
586592 */
587593#define rcu_dereference_protected (p , c ) \
588- __rcu_dereference_protected((p), (c), __rcu)
594+ __rcu_dereference_protected((p), __UNIQUE_ID(rcu), (c), __rcu)
589595
590596
591597/**
0 commit comments