linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH tip/core/rcu 0/14] sparse improvements of rcu_assign_pointer() for 3.14
@ 2013-11-16  0:39 Paul E. McKenney
  2013-11-16  0:40 ` [PATCH tip/core/rcu 01/14] rcu: Add comment on evaluate-once properties of rcu_assign_pointer() Paul E. McKenney
  0 siblings, 1 reply; 17+ messages in thread
From: Paul E. McKenney @ 2013-11-16  0:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
	peterz, rostedt, dhowells, edumazet, darren, fweisbec, 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-13.	Apply ACCESS_ONCE() to avoid a number of rcu_assign_pointer()
	calls that would otherwise suffer sparse false positives given
	patch #13 below.

14.	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.

Changes from v3:

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_alb.c  |    3 -
 b/drivers/net/bonding/bond_main.c |    5 +-
 b/include/linux/rcupdate.h        |    8 +++
 b/kernel/notifier.c               |    3 -
 b/net/bridge/br_mdb.c             |    2 
 b/net/bridge/br_multicast.c       |    4 -
 b/net/decnet/dn_route.c           |    8 ++-
 b/net/ipv4/ip_sockglue.c          |    3 -
 b/net/ipv6/ip6_gre.c              |    3 -
 b/net/ipv6/ip6_tunnel.c           |    3 -
 b/net/ipv6/sit.c                  |    3 -
 b/net/mac80211/sta_info.c         |    7 +-
 include/linux/rcupdate.h          |   92 +++++++++++++++++++++-----------------
 13 files changed, 88 insertions(+), 56 deletions(-)


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

end of thread, other threads:[~2013-11-16 15:21 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-16  0:39 [PATCH tip/core/rcu 0/14] sparse improvements of rcu_assign_pointer() for 3.14 Paul E. McKenney
2013-11-16  0:40 ` [PATCH tip/core/rcu 01/14] rcu: Add comment on evaluate-once properties of rcu_assign_pointer() Paul E. McKenney
2013-11-16  0:40   ` [PATCH tip/core/rcu 02/14] notifiers: Apply ACCESS_ONCE() to avoid sparse false positive Paul E. McKenney
2013-11-16  0:40   ` [PATCH tip/core/rcu 03/14] bridge: " Paul E. McKenney
2013-11-16  0:40   ` [PATCH tip/core/rcu 04/14] decnet: " Paul E. McKenney
2013-11-16  0:40   ` [PATCH tip/core/rcu 05/14] ipv4/ip_socketglue: " Paul E. McKenney
2013-11-16  0:40   ` [PATCH tip/core/rcu 06/14] ipv6/ip6_tunnel: " Paul E. McKenney
2013-11-16  0:40   ` [PATCH tip/core/rcu 07/14] ipv6/ip6_gre: " Paul E. McKenney
2013-11-16  0:40   ` [PATCH tip/core/rcu 08/14] ipv6/sit: " Paul E. McKenney
2013-11-16  0:40   ` [PATCH tip/core/rcu 09/14] mac80211: " Paul E. McKenney
2013-11-16  0:40   ` [PATCH tip/core/rcu 10/14] bridge/br_mdb: " Paul E. McKenney
2013-11-16  0:40   ` [PATCH tip/core/rcu 11/14] bonding/bond_main: " Paul E. McKenney
2013-11-16  4:32     ` Ding Tianhong
2013-11-16 15:21       ` Paul E. McKenney
2013-11-16  0:40   ` [PATCH tip/core/rcu 12/14] bonding/bond_alb.c: " Paul E. McKenney
2013-11-16  0:40   ` [PATCH tip/core/rcu 13/14] rcu: Make rcu_assign_pointer's assignment volatile and type-safe Paul E. McKenney
2013-11-16  0:40   ` [PATCH tip/core/rcu 14/14] rcu: Add an RCU_INITIALIZER for global RCU-protected pointers Paul E. McKenney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).