Re: [PATCH 00/10] __rcu annotations, first draft

From: Paul E. McKenney
Date: Wed Feb 24 2010 - 17:18:43 EST


On Wed, Feb 24, 2010 at 09:03:56PM +0100, Arnd Bergmann wrote:
> On Tuesday 23 February 2010, Paul E. McKenney wrote:
> > > I've just started an experimental implementation and got stuck at list rcu.
> > > The two to deal with it that I can see are
> > > - ignore list-rcu for now, and make all include/linux/rculist.h __force the
> > > problem to be ignored.
> > > - introduce a new struct rcu_list_head that needs to be used for list rcu.
> > >
> > > A nicer option might be if sparse would let you write
> > > 'struct list_head __rcu head' and interpret that as having the pointers
> > > inside it annotated as __rcu.
> >
> > Only the "next" pointer, not the "prev" pointer, but yes.
> >
> > Perhaps it would be best to see if the sparse guys are willing to take
> > this on?
>
> 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.

No need to apologize, this is an interesting option!

Thanx, Paul

> 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(-)
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/