OSDN Git Service

blk-cgroup: cgroup_rstat_updated() shouldn't be called on cgroup1
authorTejun Heo <tj@kernel.org>
Thu, 14 Nov 2019 22:31:28 +0000 (14:31 -0800)
committerJens Axboe <axboe@kernel.dk>
Mon, 18 Nov 2019 15:40:41 +0000 (08:40 -0700)
Currently, cgroup rstat is supported only on cgroup2 hierarchy and
rstat functions shouldn't be called on cgroup1 cgroups.  While
converting blk-cgroup core statistics to rstat, f73316482977
("blk-cgroup: reimplement basic IO stats using cgroup rstat")
accidentally ended up calling cgroup_rstat_updated() on cgroup1
cgroups causing crashes.

Longer term, we probably should add cgroup1 support to rstat but for
now let's mask the call directly.

Fixes: f73316482977 ("blk-cgroup: reimplement basic IO stats using cgroup rstat")
Tested-by: Faiz Abbas <faiz_abbas@ti.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/linux/blk-cgroup.h

index 48a6673..19394c7 100644 (file)
@@ -626,7 +626,8 @@ static inline bool blkcg_bio_issue_check(struct request_queue *q,
                bis->cur.ios[rwd]++;
 
                u64_stats_update_end(&bis->sync);
-               cgroup_rstat_updated(blkg->blkcg->css.cgroup, cpu);
+               if (cgroup_subsys_on_dfl(io_cgrp_subsys))
+                       cgroup_rstat_updated(blkg->blkcg->css.cgroup, cpu);
                put_cpu();
        }