Tejun Heo
b0814361a2
blkcg: make blkcg_print_stat() print stats only for online blkgs
...
blkcg_print_stat() iterates blkgs under RCU and doesn't test whether
the blkg is online. This can call into pd_stat_fn() on a pd which is
still being initialized leading to an oops.
The heaviest operation - recursively summing up rwstat counters - is
already done while holding the queue_lock. Expand queue_lock to cover
the other operations and skip the blkg if it isn't online yet. The
online state is protected by both blkcg and queue locks, so this
guarantees that only online blkgs are processed.
Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Roman Gushchin <guro@fb.com>
Cc: Josef Bacik <jbacik@fb.com>
Fixes: 903d23f0a3 ("blk-cgroup: allow controllers to output their own stats")
Cc: stable@vger.kernel.org # v4.19+
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-11-06 17:08:38 -07:00
..
partitions
docs: admin-guide: add a series of orphaned documents
2019-07-15 11:03:02 -03:00
badblocks.c
block: switch all files cleared marked as GPLv2 to SPDX tags
2019-04-30 16:11:57 -06:00
bfq-cgroup.c
bfq: Add per-device weight
2019-09-06 14:33:52 -06:00
bfq-iosched.c
block, bfq: push up injection only after setting service time
2019-09-17 20:03:49 -06:00
bfq-iosched.h
bfq: Add per-device weight
2019-09-06 14:33:52 -06:00
bfq-wf2q.c
bfq: Fix the missing barrier in __bfq_entity_update_weight_prio
2019-09-06 14:33:48 -06:00
bio-integrity.c
block/bio-integrity: fix a memory leak bug
2019-07-11 20:01:21 -06:00
bio.c
block: move same page handling from __bio_add_pc_page to the callers
2019-08-22 07:14:39 -06:00
blk-cgroup.c
blkcg: make blkcg_print_stat() print stats only for online blkgs
2019-11-06 17:08:38 -07:00
blk-core.c
block: centralize PI remapping logic to the block layer
2019-09-17 20:03:49 -06:00
blk-exec.c
block: add SPDX tags to block layer files missing licensing information
2019-04-30 16:12:03 -06:00
blk-flush.c
block: fix null pointer dereference in blk_mq_rq_timed_out()
2019-09-27 07:01:25 -06:00
blk-integrity.c
block: centralize PI remapping logic to the block layer
2019-09-17 20:03:49 -06:00
blk-ioc.c
blk-iocost.c
iocost: don't nest spin_lock_irq in ioc_weight_write()
2019-10-31 11:40:57 -06:00
blk-iolatency.c
blkcg: s/RQ_QOS_CGROUP/RQ_QOS_LATENCY/
2019-08-28 21:17:08 -06:00
blk-lib.c
blk-map.c
block: remove the bi_phys_segments field in struct bio
2019-06-20 10:29:22 -06:00
blk-merge.c
block: Improve physical block alignment of split bios
2019-08-04 21:41:29 -06:00
blk-mq-cpumap.c
blk-mq: balance mapping between present CPUs and queues
2019-08-04 21:43:12 -06:00
blk-mq-debugfs-zoned.c
blk-mq-debugfs.c
for-5.3/block-20190708
2019-07-09 10:45:06 -07:00
blk-mq-debugfs.h
blk-mq: no need to check return value of debugfs_create functions
2019-06-13 03:00:30 -06:00
blk-mq-pci.c
block: Fix blk_mq_*_map_queues() kernel-doc headers
2019-05-31 15:12:34 -06:00
blk-mq-rdma.c
block: Fix blk_mq_*_map_queues() kernel-doc headers
2019-05-31 15:12:34 -06:00
blk-mq-sched.c
blk-mq: move lockdep_assert_held() into elevator_exit
2019-09-26 00:45:05 -06:00
blk-mq-sched.h
block: blk-mq: Remove blk_mq_sched_started_request and started_request
2019-07-23 07:25:09 -06:00
blk-mq-sysfs.c
block: split .sysfs_lock into two locks
2019-08-27 10:40:20 -06:00
blk-mq-tag.c
blk-mq: introduce blk_mq_tagset_wait_completed_request()
2019-08-04 21:41:29 -06:00
blk-mq-tag.h
blk-mq-virtio.c
block: Fix blk_mq_*_map_queues() kernel-doc headers
2019-05-31 15:12:34 -06:00
blk-mq.c
blk-mq: apply normal plugging for HDD
2019-09-27 11:40:21 -06:00
blk-mq.h
block: Disable write plugging for zoned block devices
2019-07-10 14:18:01 -06:00
blk-pm.c
block: bypass blk_set_runtime_active for uninitialized q->dev
2019-09-12 07:11:56 -06:00
blk-pm.h
blk-rq-qos.c
blk-wbt: fix performance regression in wbt scale_up/scale_down
2019-10-06 09:26:41 -06:00
blk-rq-qos.h
blk-rq-qos: fix first node deletion of rq_qos_del()
2019-10-15 10:13:13 -06:00
blk-settings.c
dma-mapping updates for 5.4:
2019-09-19 13:27:23 -07:00
blk-softirq.c
blk-stat.c
block: add SPDX tags to block layer files missing licensing information
2019-04-30 16:12:03 -06:00
blk-stat.h
blk-sysfs.c
rq-qos: get rid of redundant wbt_update_limits()
2019-09-27 01:13:10 -06:00
blk-throttle.c
block: make rq sector size accessible for block stats
2019-09-15 16:02:08 -06:00
blk-timeout.c
block: add SPDX tags to block layer files missing licensing information
2019-04-30 16:12:03 -06:00
blk-wbt.c
blk-wbt: fix performance regression in wbt scale_up/scale_down
2019-10-06 09:26:41 -06:00
blk-wbt.h
block/rq_qos: implement rq_qos_ops->queue_depth_changed()
2019-08-28 21:17:07 -06:00
blk-zoned.c
blk-zoned: implement REQ_OP_ZONE_RESET_ALL
2019-08-04 21:41:29 -06:00
blk.h
block: fix null pointer dereference in blk_mq_rq_timed_out()
2019-09-27 07:01:25 -06:00
bounce.c
bsg-lib.c
block: drop device references in bsg_queue_rq()
2019-09-23 11:17:24 -06:00
bsg.c
block: switch all files cleared marked as GPLv2 to SPDX tags
2019-04-30 16:11:57 -06:00
cmdline-parser.c
compat_ioctl.c
elevator.c
block: Fix elv_support_iosched()
2019-10-14 13:54:09 -06:00
genhd.c
block: Delay default elevator initialization
2019-09-05 19:52:34 -06:00
ioctl.c
block: add SPDX tags to block layer files missing licensing information
2019-04-30 16:12:03 -06:00
ioprio.c
docs: block: convert to ReST
2019-07-15 09:20:27 -03:00
Kconfig
blkcg: implement blk-iocost
2019-08-28 21:17:12 -06:00
Kconfig.iosched
docs: block: convert to ReST
2019-07-15 09:20:27 -03:00
kyber-iosched.c
blk-mq: remove blk_mq_put_ctx()
2019-07-02 21:03:27 -06:00
Makefile
blkcg: implement blk-iocost
2019-08-28 21:17:12 -06:00
mq-deadline.c
block: Introduce elevator features
2019-09-05 19:52:33 -06:00
opal_proto.h
block: sed-opal: Removed duplicate OPAL_METHOD_LENGTH definition
2019-08-20 09:34:49 -06:00
partition-generic.c
scsi_ioctl.c
block: switch all files cleared marked as GPLv2 to SPDX tags
2019-04-30 16:11:57 -06:00
sed-opal.c
block: sed-opal: fix sparse warning: convert __be64 data
2019-10-03 14:21:32 -06:00
t10-pi.c
block: t10-pi: fix -Wswitch warning
2019-09-23 08:05:19 -06:00