From 47560119ead39cfb8d684d5035a6c9b2663ad749 Mon Sep 17 00:00:00 2001 From: Hugh Dickins Date: Wed, 21 Mar 2012 16:34:21 -0700 Subject: [PATCH] --- yaml --- r: 292682 b: refs/heads/master c: ca464d69b19120a826aa2534de2511a6f542edf5 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/cgroup.c | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index a478264abaa1..40d76811f144 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 42aee6c495e07dba7410b863a360db6bb9ec6d66 +refs/heads/master: ca464d69b19120a826aa2534de2511a6f542edf5 diff --git a/trunk/kernel/cgroup.c b/trunk/kernel/cgroup.c index 8eb90f25bd7b..391d5e991e5f 100644 --- a/trunk/kernel/cgroup.c +++ b/trunk/kernel/cgroup.c @@ -5033,6 +5033,8 @@ css_get_next(struct cgroup_subsys *ss, int id, return NULL; BUG_ON(!ss->use_id); + WARN_ON_ONCE(!rcu_read_lock_held()); + /* fill start point for scan */ tmpid = id; while (1) { @@ -5040,10 +5042,7 @@ css_get_next(struct cgroup_subsys *ss, int id, * scan next entry from bitmap(tree), tmpid is updated after * idr_get_next(). */ - spin_lock(&ss->id_lock); tmp = idr_get_next(&ss->idr, &tmpid); - spin_unlock(&ss->id_lock); - if (!tmp) break; if (tmp->depth >= depth && tmp->stack[depth] == rootid) {