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> Acked-by: Li Zefan <lizf@cn.fujitsu.com> Cc: laijs@cn.fujitsu.com Cc: dipankar@in.ibm.com Cc: mathieu.desnoyers@polymtl.ca Cc: josh@joshtriplett.org Cc: dvhltc@us.ibm.com Cc: niv@us.ibm.com Cc: peterz@infradead.org Cc: rostedt@goodmis.org Cc: Valdis.Kletnieks@vt.edu Cc: dhowells@redhat.com Cc: eric.dumazet@gmail.com LKML-Reference: <1271880131-3951-2-git-send-email-paulmck@linux.vnet.ibm.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
8b08ca52f5
commit
8b46f88084
|
@ -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,
|
* No lock is needed, since the task isn't on tasklist yet,
|
||||||
* so it can't be moved to another cgroup, which means the
|
* so it can't be moved to another cgroup, which means the
|
||||||
* freezer won't be removed and will be valid during this
|
* 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.
|
||||||
*/
|
*/
|
||||||
|
rcu_read_lock();
|
||||||
freezer = task_freezer(task);
|
freezer = task_freezer(task);
|
||||||
|
rcu_read_unlock();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The root cgroup is non-freezable, so we can skip the
|
* The root cgroup is non-freezable, so we can skip the
|
||||||
|
|
Loading…
Reference in a new issue