Messages in this thread | | | Date | Wed, 21 Apr 2010 09:05:50 +0800 | From | Li Zefan <> | Subject | Re: INFO: suspicious rcu_dereference_check() usage - include/linux/cgroup.h:492 invoked rcu_dereference_check() without protection! |
| |
> commit 2836f18139267ea918ed2cf39023fb0eb38c4361 > Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com> > Date: Mon Apr 19 15:59:50 2010 -0700 > > rcu: fix RCU lockdep splat on freezer_fork path > > Add an RCU read-side critical section to suppress this false positive. > > Located-by: Eric Paris <eparis@parisplace.org> > Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> > > diff --git a/kernel/cgroup_freezer.c b/kernel/cgroup_freezer.c > index da5e139..e5c0244 100644 > --- a/kernel/cgroup_freezer.c > +++ b/kernel/cgroup_freezer.c > @@ -205,9 +205,12 @@ static void freezer_fork(struct cgroup_subsys *ss, struct task_struct *task) > * No lock is needed, since the task isn't on tasklist yet, > * so it can't be moved to another cgroup, which means the > * freezer won't be removed and will be valid during this > - * function call. > + * function call. Nevertheless, apply RCU read-side critical > + * section to suppress RCU lockdep false positives. > */
It was me that added the original comment.
> + rcu_read_lock(); > freezer = task_freezer(task); > + rcu_read_unlock(); > > /* > * The root cgroup is non-freezable, so we can skip the
Acked-by: Li Zefan <lizf@cn.fujitsu.com>
| |