public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 tip/core/rcu 0/4] Documentation changes for 3.14
@ 2013-12-11 23:08 Paul E. McKenney
  2013-12-11 23:08 ` [PATCH v2 tip/core/rcu 1/4] rcu: Add comment on evaluate-once properties of rcu_assign_pointer() Paul E. McKenney
  2013-12-12  4:10 ` [PATCH v2 tip/core/rcu 0/4] Documentation changes for 3.14 Josh Triplett
  0 siblings, 2 replies; 6+ messages in thread
From: Paul E. McKenney @ 2013-12-11 23:08 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
	peterz, rostedt, dhowells, edumazet, darren, fweisbec, oleg, sbw

Hello!

This series once again attempts to improve rcu_assign_pointer()'s
relationship with sparse.

1.	Add a comment indicating that despite appearances,
	rcu_assign_pointer() really only evaluates its arguments once,
	as a cpp macro should.

2.	Replace rcu_assign_pointer() of NULL with RCU_INIT_POINTER() to
	silence a sparse warning.

3.	Apply ACCESS_ONCE() to rcu_assign_pointer()'s target to prevent
	comiler mischief.  Also require that the source pointer be from
	the kernel address space.  Sometimes it can be from the RCU address
	space, which necessitates the remaining patches in this series.
	Which, it must be admitted, apply to a very small fraction of
	the rcu_assign_pointer() invocations in the kernel.  This commit
	courtesy of Josh Triplett.

4.	Add an RCU_INITIALIZER() for compile-time initialization of
	global RCU-protected pointers.

Changes from v1 (candidate for v3.14):

o	Remove the requirement that values passed to rcu_assign_pointer()
	needed to be in sparse's __kernel address space.  This found
	no bugs and produced a number of ugly false positives.	(Hey,
	it seemed like a good idea at the time...)

o	Remove lots of rcu_assign_pointer()-to-ACCESS_ONCE() changes
	that are no longer needed given the above change.

Changes from v3 (candidate for 3.13):

o	Remove the replacements of rcu_assign_pointer() with ACCESS_ONCE()
	where new data really was being exposed to readers.

Changes from v2:

o	Switch from rcu_assign_pointer() to ACCESS_ONCE() given that
	the pointers are all --rcu and already visible to readers,
	as suggested by Eric Dumazet and Josh Triplett.

o	Place the commit adding the rcu_assign_pointer()'s ACCESS_ONCE()
	at the end to allow better bisectability, as suggested by Josh
	Triplett.

o	Add a comment to rcu_assign_pointer() noting that it only evaluates
	its arguments once, as suggested by Josh Triplett.

Changes from v1:

o	Fix grammar nit in commit logs.

							Thanx, Paul

------------------------------------------------------------------------

 b/drivers/net/bonding/bond_main.c |    2 
 b/include/linux/rcupdate.h        |   90 +++++++++++++++++++++-----------------
 2 files changed, 52 insertions(+), 40 deletions(-)


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2013-12-12  4:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-11 23:08 [PATCH v2 tip/core/rcu 0/4] Documentation changes for 3.14 Paul E. McKenney
2013-12-11 23:08 ` [PATCH v2 tip/core/rcu 1/4] rcu: Add comment on evaluate-once properties of rcu_assign_pointer() Paul E. McKenney
2013-12-11 23:08   ` [PATCH v2 tip/core/rcu 2/4] bonding: Use RCU_INIT_POINTER() for better overhead and for sparse Paul E. McKenney
2013-12-11 23:08   ` [PATCH v2 tip/core/rcu 3/4] rcu: Make rcu_assign_pointer's assignment volatile and type-safe Paul E. McKenney
2013-12-11 23:08   ` [PATCH v2 tip/core/rcu 4/4] rcu: Add an RCU_INITIALIZER for global RCU-protected pointers Paul E. McKenney
2013-12-12  4:10 ` [PATCH v2 tip/core/rcu 0/4] Documentation changes for 3.14 Josh Triplett

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox