Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1ce7e4ff authored by Li Zefan's avatar Li Zefan Committed by Paul E. McKenney
Browse files

cgroup: Check task_lock in task_subsys_state()



Expand task_subsys_state()'s rcu_dereference_check() to include the full
locking rule as documented in Documentation/cgroups/cgroups.txt by adding
a check for task->alloc_lock being held.

This fixes an RCU false positive when resuming from suspend. The warning
comes from freezer cgroup in cgroup_freezing_or_frozen().

Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
Acked-by: default avatarMatt Helsley <matthltc@us.ibm.com>
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent b629317e
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -530,6 +530,7 @@ static inline struct cgroup_subsys_state *task_subsys_state(
{
{
	return rcu_dereference_check(task->cgroups->subsys[subsys_id],
	return rcu_dereference_check(task->cgroups->subsys[subsys_id],
				     rcu_read_lock_held() ||
				     rcu_read_lock_held() ||
				     lockdep_is_held(&task->alloc_lock) ||
				     cgroup_lock_is_held());
				     cgroup_lock_is_held());
}
}