]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 8 Jun 2022 12:06:27 +0000 (14:06 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 8 Jun 2022 12:06:27 +0000 (14:06 +0200)
added patches:
block-fix-bio_clone_blkg_association-to-associate-with-proper-blkcg_gq.patch

queue-5.15/block-fix-bio_clone_blkg_association-to-associate-with-proper-blkcg_gq.patch [new file with mode: 0644]
queue-5.15/series

diff --git a/queue-5.15/block-fix-bio_clone_blkg_association-to-associate-with-proper-blkcg_gq.patch b/queue-5.15/block-fix-bio_clone_blkg_association-to-associate-with-proper-blkcg_gq.patch
new file mode 100644 (file)
index 0000000..2bb4695
--- /dev/null
@@ -0,0 +1,50 @@
+From 22b106e5355d6e7a9c3b5cb5ed4ef22ae585ea94 Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+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 <jack@suse.cz>
+
+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>
+---
+ block/blk-cgroup.c |    8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+--- a/block/blk-cgroup.c
++++ b/block/blk-cgroup.c
+@@ -1886,12 +1886,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);
index 819dd44e42ae83d95b2adef4c6d20f56c600743a..b3f414da7a901048450a8f761c0909f4a6a61906 100644 (file)
@@ -664,3 +664,4 @@ md-don-t-set-mddev-private-to-null-in-raid0-pers-free.patch
 md-fix-double-free-of-io_acct_set-bioset.patch
 md-bcache-check-the-return-value-of-kzalloc-in-detached_dev_do_request.patch
 pinctrl-rockchip-support-setting-input-enable-param.patch
+block-fix-bio_clone_blkg_association-to-associate-with-proper-blkcg_gq.patch