On Tuesday 23 February 2010, Paul E. McKenney wrote:
I've implemented the second option now, and this seems to work alright.
In order to test this out, I've annotated all rcu users in the kernel
directory. One observation is that many members of task_struct are
using RCU inconsistently. I'm not sure whether these should be considered
bugs or false positives though. If we get a lot of false positives or
people are generally unhappy about the annotations, they are not worth
it, but if we find a few actual bugs, I guess it would be good to
have this.
Examples of pointers that I did not annotate because most of the
places accessing them do not use RCU are task->sighand, task->nsproxy,
and task->real_parent.
Sorry for hijacking the discussion on your patch, but I assume that
the same people interested in the lockdep diagnostics are also
interested in the static annotations for RCU.
Arnd
Arnd Bergmann (10):
rcu: define __rcu address space modifier for sparse
rcu: annotated list rcu code
cgroups: __rcu annotations
credentials: rcu annotation
perf_event: __rcu annotations
audit: __rcu annotations
module: __rcu annotations
pid: __rcu annotations
notifiers: __rcu annotations
scheduler: __rcu annotations
include/linux/cgroup.h | 6 +-
include/linux/compiler.h | 2 +
include/linux/cred.h | 4 +-
include/linux/fdtable.h | 2 +-
include/linux/init_task.h | 6 +-
include/linux/module.h | 4 +-
include/linux/notifier.h | 10 ++--
include/linux/perf_event.h | 10 ++--
include/linux/pid.h | 9 ++-
include/linux/rculist.h | 152 ++++++++++++++++++++++++++++++++------------
include/linux/rcupdate.h | 46 ++++++++++++--
include/linux/sched.h | 14 ++--
kernel/audit.c | 4 +-
kernel/audit.h | 6 +-
kernel/audit_tree.c | 14 ++--
kernel/auditfilter.c | 28 ++++----
kernel/auditsc.c | 8 +-
kernel/cgroup.c | 63 ++++++++++---------
kernel/cpuset.c | 2 +-
kernel/cred.c | 50 ++++++++-------
kernel/exit.c | 12 ++--
kernel/fork.c | 6 +-
kernel/module.c | 20 ++++--
kernel/notifier.c | 12 ++--
kernel/perf_event.c | 52 ++++++++--------
kernel/pid.c | 8 +-
kernel/sched.c | 31 +++++----
27 files changed, 352 insertions(+), 229 deletions(-)
--