Date: | 2010-05-07 08:57:00 (13 years 4 months ago) |
---|---|
Author: | Li Zefan |
Commit: | 0341509fdfc9519f7de6aabc5dd23217cef72b73 |
Message: | blk-cgroup: Fix an RCU warning in blkiocg_create() with CONFIG_PROVE_RCU=y, a warning can be triggered: # mount -t cgroup -o blkio xxx /mnt # mkdir /mnt/subgroup ... kernel/cgroup.c:4442 invoked rcu_dereference_check() without protection! ... To fix this, we avoid caling css_depth() here, which is a bit simpler than the original code. Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> Acked-by: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com> |
Files: |
block/blk-cgroup.c (1 diff) |
Change Details
block/blk-cgroup.c | ||
---|---|---|
286 | 286 | static struct cgroup_subsys_state * |
287 | 287 | blkiocg_create(struct cgroup_subsys *subsys, struct cgroup *cgroup) |
288 | 288 | { |
289 | struct blkio_cgroup *blkcg, *parent_blkcg; | |
289 | struct blkio_cgroup *blkcg; | |
290 | struct cgroup *parent = cgroup->parent; | |
290 | 291 | |
291 | if (!cgroup->parent) { | |
292 | if (!parent) { | |
292 | 293 | blkcg = &blkio_root_cgroup; |
293 | 294 | goto done; |
294 | 295 | } |
295 | 296 | |
296 | 297 | /* Currently we do not support hierarchy deeper than two level (0,1) */ |
297 | parent_blkcg = cgroup_to_blkio_cgroup(cgroup->parent); | |
298 | if (css_depth(&parent_blkcg->css) > 0) | |
298 | if (parent != cgroup->top_cgroup) | |
299 | 299 | return ERR_PTR(-EINVAL); |
300 | 300 | |
301 | 301 | blkcg = kzalloc(sizeof(*blkcg), GFP_KERNEL); |
Branches:
ben-wpan
ben-wpan-stefan
5396a9238205f20f811ea57898980d3ca82df0b6
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9