lkml.org 
[lkml]   [2013]   [Oct]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subject[PATCH v3 tip/core/rcu 0/14] Sparse-related updates for 3.13
Hello!

This series features updates to allow sparse to do a better job of
statically analyzing RCU usage:

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 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 | 8 +++++---
b/include/linux/rcupdate.h | 20 +++++++++++++++++++-
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 ++++---
b/net/wireless/scan.c | 32 ++++++++++++++++++--------------
13 files changed, 66 insertions(+), 33 deletions(-)



\
 
 \ /
  Last update: 2013-10-12 01:41    [W:0.093 / U:0.164 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site