Jan Kara
5f62b21b7c
block: fix bio_clone_blkg_association() to associate with proper blkcg_gq
...
commit 22b106e5355d6e7a9c3b5cb5ed4ef22ae585ea94 upstream.
Commit d92c370a16cb ("block: really clone the block cgroup in
bio_clone_blkg_association") changed bio_clone_blkg_association() to
just clone bio->bi_blkg reference from source to destination bio. This
is however wrong if the source and destination bios are against
different block devices because struct blkcg_gq is different for each
bdev-blkcg pair. This will result in IOs being accounted (and throttled
as a result) multiple times against the same device (src bdev) while
throttling of the other device (dst bdev) is ignored. In case of BFQ the
inconsistency can even result in crashes in bfq_bic_update_cgroup().
Fix the problem by looking up correct blkcg_gq for the cloned bio.
Reported-by: Logan Gunthorpe <logang@deltatee.com>
Reported-and-tested-by: Donald Buczek <buczek@molgen.mpg.de>
Fixes: d92c370a16cb ("block: really clone the block cgroup in bio_clone_blkg_association")
CC: stable@vger.kernel.org
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20220602081242.7731-1-jack@suse.cz
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-06-14 18:11:50 +02:00
..
partitions
badblocks.c
bfq-cgroup.c
bfq: Make sure bfqg for which we are queueing requests is online
2022-06-14 18:11:50 +02:00
bfq-iosched.c
bfq: Get rid of __bio_blkcg() usage
2022-06-14 18:11:50 +02:00
bfq-iosched.h
bfq: Get rid of __bio_blkcg() usage
2022-06-14 18:11:50 +02:00
bfq-wf2q.c
bfq: fix blkio cgroup leakage v4
2020-09-03 11:26:54 +02:00
bio-integrity.c
block: bio-integrity: Advance seed correctly for larger interval sizes
2022-02-08 18:24:28 +01:00
bio.c
block: fix bio_clone_blkg_association() to associate with proper blkcg_gq
2022-06-14 18:11:50 +02:00
blk-cgroup.c
blk-cgroup: fix UAF by grabbing blkcg lock before destroying blkg pd
2021-09-30 10:09:25 +02:00
blk-core.c
Revert "Revert "block: end bio with BLK_STS_AGAIN in case of non-mq devs and REQ_NOWAIT""
2021-02-07 15:35:47 +01:00
blk-exec.c
blk-flush.c
block: Fix fsync always failed if once failed
2022-03-08 19:07:47 +01:00
blk-integrity.c
blk-ioc.c
block: Fix use-after-free issue accessing struct io_cq
2020-04-17 10:50:04 +02:00
blk-iocost.c
blk-iocost: ioc_pd_free() shouldn't assume irq disabled
2020-09-09 19:12:35 +02:00
blk-iolatency.c
blk-iolatency: Fix inflight count imbalances and IO hangs on offline
2022-06-14 18:11:49 +02:00
blk-lib.c
blk-map.c
blk-merge.c
block: return ELEVATOR_DISCARD_MERGE if possible
2022-05-25 09:14:38 +02:00
blk-mq-cpumap.c
blk-mq-debugfs-zoned.c
blk-mq-debugfs.c
blk-mq-debugfs: update blk_queue_flag_name[] accordingly for new flags
2020-07-22 09:32:52 +02:00
blk-mq-debugfs.h
blk-mq-pci.c
blk-mq-rdma.c
blk-mq-sched.c
kyber: fix out of bounds access when preempted
2021-05-19 10:08:30 +02:00
blk-mq-sched.h
block: only call sched requeue_request() for scheduled requests
2020-09-23 12:40:37 +02:00
blk-mq-sysfs.c
blk-mq: move cancel of hctx->run_work to the front of blk_exit_queue
2020-10-29 09:57:34 +01:00
blk-mq-tag.c
blk-mq-tag.h
blk-mq-virtio.c
blk-mq.c
block: remove inaccurate requeue check
2021-11-17 09:48:31 +01:00
blk-mq.h
blk-pm.c
scsi: block: Fix a race in the runtime power management code
2021-01-06 14:48:37 +01:00
blk-pm.h
blk-rq-qos.c
rq-qos: fix missed wake-ups in rq_qos_throttle try two
2021-07-19 08:53:16 +02:00
blk-rq-qos.h
block: fix race between adding/removing rq qos and normal IO
2021-07-14 16:53:18 +02:00
blk-settings.c
blk-settings: align max_sectors on "logical_block_size" boundary
2021-03-04 10:26:40 +01:00
blk-softirq.c
blk-stat.c
blk-stat.h
blk-sysfs.c
block: don't delete queue kobject before its children
2022-04-15 14:18:05 +02:00
blk-throttle.c
blk-throttle: fix UAF by deleteing timer in blk_throtl_exit()
2021-09-26 14:07:13 +02:00
blk-timeout.c
blk-wbt.c
blk-wbt: make sure throttle is enabled properly
2021-07-14 16:53:25 +02:00
blk-wbt.h
blk-wbt: introduce a new disable state to prevent false positive by rwb_enabled()
2021-07-14 16:53:25 +02:00
blk-zoned.c
blk-zoned: allow BLKREPORTZONE without CAP_SYS_ADMIN
2021-09-22 12:26:19 +02:00
blk.h
bounce.c
bsg-lib.c
bsg.c
scsi: bsg: Remove support for SCSI_IOCTL_SEND_COMMAND
2021-09-22 12:26:23 +02:00
cmdline-parser.c
compat_ioctl.c
block/compat_ioctl: fix range check in BLKGETSIZE
2022-04-27 13:50:50 +02:00
elevator.c
block: return ELEVATOR_DISCARD_MERGE if possible
2022-05-25 09:14:38 +02:00
genhd.c
block: Suppress uevent for hidden device when removed
2021-03-30 14:35:23 +02:00
ioctl.c
ioprio.c
block: fix ioprio_get(IOPRIO_WHO_PGRP) vs setuid(2)
2021-12-14 14:49:02 +01:00
Kconfig
Kconfig.iosched
kyber-iosched.c
kyber: fix out of bounds access when preempted
2021-05-19 10:08:30 +02:00
Makefile
mq-deadline.c
block: return ELEVATOR_DISCARD_MERGE if possible
2022-05-25 09:14:38 +02:00
opal_proto.h
partition-generic.c
scsi_ioctl.c
sed-opal.c
t10-pi.c