From: Greg Kroah-Hartman Date: Wed, 8 Jun 2022 12:06:34 +0000 (+0200) Subject: 5.17-stable patches X-Git-Tag: v5.10.121~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=458cdbfe45290a0d26d371e38c9dfcbc0933b9d9;p=thirdparty%2Fkernel%2Fstable-queue.git 5.17-stable patches added patches: block-fix-bio_clone_blkg_association-to-associate-with-proper-blkcg_gq.patch --- diff --git a/queue-5.17/block-fix-bio_clone_blkg_association-to-associate-with-proper-blkcg_gq.patch b/queue-5.17/block-fix-bio_clone_blkg_association-to-associate-with-proper-blkcg_gq.patch new file mode 100644 index 00000000000..66597d3a930 --- /dev/null +++ b/queue-5.17/block-fix-bio_clone_blkg_association-to-associate-with-proper-blkcg_gq.patch @@ -0,0 +1,50 @@ +From 22b106e5355d6e7a9c3b5cb5ed4ef22ae585ea94 Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Thu, 2 Jun 2022 10:12:42 +0200 +Subject: block: fix bio_clone_blkg_association() to associate with proper blkcg_gq + +From: Jan Kara + +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 +Reported-and-tested-by: Donald Buczek +Fixes: d92c370a16cb ("block: really clone the block cgroup in bio_clone_blkg_association") +CC: stable@vger.kernel.org +Reviewed-by: Christoph Hellwig +Signed-off-by: Jan Kara +Link: https://lore.kernel.org/r/20220602081242.7731-1-jack@suse.cz +Signed-off-by: Jens Axboe +Signed-off-by: Greg Kroah-Hartman +--- + block/blk-cgroup.c | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +--- a/block/blk-cgroup.c ++++ b/block/blk-cgroup.c +@@ -1888,12 +1888,8 @@ EXPORT_SYMBOL_GPL(bio_associate_blkg); + */ + void bio_clone_blkg_association(struct bio *dst, struct bio *src) + { +- if (src->bi_blkg) { +- if (dst->bi_blkg) +- blkg_put(dst->bi_blkg); +- blkg_get(src->bi_blkg); +- dst->bi_blkg = src->bi_blkg; +- } ++ if (src->bi_blkg) ++ bio_associate_blkg_from_css(dst, &bio_blkcg(src)->css); + } + EXPORT_SYMBOL_GPL(bio_clone_blkg_association); + diff --git a/queue-5.17/series b/queue-5.17/series index 18641ff34ff..3820e8c460f 100644 --- a/queue-5.17/series +++ b/queue-5.17/series @@ -769,3 +769,4 @@ md-fix-double-free-of-io_acct_set-bioset.patch md-bcache-check-the-return-value-of-kzalloc-in-detached_dev_do_request.patch tty-n_gsm-fix-packet-data-hex-dump-output.patch pinctrl-rockchip-support-setting-input-enable-param.patch +block-fix-bio_clone_blkg_association-to-associate-with-proper-blkcg_gq.patch