Skip to content

Commit 24ba530

Browse files
henrybear327paulmckrcu
authored andcommitted
rcu: Replace ________p1 and _________p1 with __UNIQUE_ID(rcu)
This commit replaces both ________p1 and _________p1 with __UNIQUE_ID(rcu), and also adjusts the callers of the affected macros. __UNIQUE_ID(rcu) will generate unique variable names during compilation, which eliminates the need of ________p1 and _________p1 (both having 4 occurrences prior to the code change). This also avoids the variable name shadowing issue, or at least makes those wishing to cause shadowing problems work much harder to do so. The same idea is used for the min/max macros (commit 589a978 and commit e9092d0). Signed-off-by: Jim Huang <jserv@ccns.ncku.edu.tw> Signed-off-by: Chun-Hung Tseng <henrybear327@gmail.com> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
1 parent 8c0abfd commit 24ba530

2 files changed

Lines changed: 30 additions & 23 deletions

File tree

include/linux/rcupdate.h

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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
/**

include/linux/srcu.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,8 @@ static inline int srcu_read_lock_held(const struct srcu_struct *ssp)
117117
* lockdep_is_held() calls.
118118
*/
119119
#define srcu_dereference_check(p, ssp, c) \
120-
__rcu_dereference_check((p), (c) || srcu_read_lock_held(ssp), __rcu)
120+
__rcu_dereference_check((p), __UNIQUE_ID(rcu), \
121+
(c) || srcu_read_lock_held(ssp), __rcu)
121122

122123
/**
123124
* srcu_dereference - fetch SRCU-protected pointer for later dereferencing

0 commit comments

Comments
 (0)