mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 12:44:03 +02:00
rcu: Mark __rcu_access_pointer() as context_unsafe()
A simple comparison of a pointer returned by rcu_access_pointer() results in a context-analysis warning for lockless inspection of the RCU-protected (also known as __rcu-protected) pointer. This can be suppressed by placing context_unsafe() calls around calls rcu_access_pointer(), but this is messy and distracting. This commit therefore wraps the underlying __rcu_access_pointer() macro with a call to context_unsafe(), thereby informing the context-analysis code that rcu_access_pointer() may safely be invoked outside of an RCU read-side critical section. Reported-by: Christoph Hellwig <hch@lst.de> Suggested-by: Marco Elver <elver@google.com> Signed-off-by: Paul E. McKenney <paulmck@kernel.org> Tested-by: Nilay Shroff <nilay@linux.ibm.com> Reviewed-by: Marco Elver <elver@google.com>
This commit is contained in:
parent
1384ea908e
commit
573d76f7db
|
|
@ -490,12 +490,12 @@ context_unsafe( \
|
|||
*/
|
||||
#define unrcu_pointer(p) __unrcu_pointer(p, __UNIQUE_ID(rcu))
|
||||
|
||||
#define __rcu_access_pointer(p, local, space) \
|
||||
#define __rcu_access_pointer(p, local, space) context_unsafe( \
|
||||
({ \
|
||||
typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
|
||||
rcu_check_sparse(p, space); \
|
||||
((typeof(*p) __force __kernel *)(local)); \
|
||||
})
|
||||
}) )
|
||||
#define __rcu_dereference_check(p, local, c, space) \
|
||||
({ \
|
||||
/* Dependency order vs. p above. */ \
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user