From: Khazhismel Kumykov <khazhy@chromium.org>
To: stable@vger.kernel.org
Cc: linux-block@vger.kernel.org, Yu Kuai <yukuai3@huawei.com>,
Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>,
Jan Kara <jack@suse.cz>, Jens Axboe <axboe@kernel.dk>,
Sasha Levin <sashal@kernel.org>,
Khazhismel Kumykov <khazhy@google.com>
Subject: [PATCH v5.10 5/5] block, bfq: fix uaf for bfqq in bic_set_bfqq()
Date: Mon, 13 Mar 2023 15:27:57 -0700 [thread overview]
Message-ID: <20230313222757.1103179-6-khazhy@google.com> (raw)
In-Reply-To: <20230313222757.1103179-1-khazhy@google.com>
From: Yu Kuai <yukuai3@huawei.com>
[ Upstream commit b600de2d7d3a16f9007fad1bdae82a3951a26af2 ]
After commit 64dc8c732f5c ("block, bfq: fix possible uaf for 'bfqq->bic'"),
bic->bfqq will be accessed in bic_set_bfqq(), however, in some context
bic->bfqq will be freed, and bic_set_bfqq() is called with the freed
bic->bfqq.
Fix the problem by always freeing bfqq after bic_set_bfqq().
Fixes: 64dc8c732f5c ("block, bfq: fix possible uaf for 'bfqq->bic'")
Reported-and-tested-by: Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20230130014136.591038-1-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Khazhismel Kumykov <khazhy@google.com>
---
block/bfq-cgroup.c | 2 +-
block/bfq-iosched.c | 4 +++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/block/bfq-cgroup.c b/block/bfq-cgroup.c
index 2f440b79183d..1f9ccc661d57 100644
--- a/block/bfq-cgroup.c
+++ b/block/bfq-cgroup.c
@@ -748,8 +748,8 @@ static void *__bfq_bic_change_cgroup(struct bfq_data *bfqd,
* request from the old cgroup.
*/
bfq_put_cooperator(sync_bfqq);
- bfq_release_process_ref(bfqd, sync_bfqq);
bic_set_bfqq(bic, NULL, true);
+ bfq_release_process_ref(bfqd, sync_bfqq);
}
}
}
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 016d7f32af9f..6687b805bab3 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -5070,9 +5070,11 @@ static void bfq_check_ioprio_change(struct bfq_io_cq *bic, struct bio *bio)
bfqq = bic_to_bfqq(bic, false);
if (bfqq) {
- bfq_release_process_ref(bfqd, bfqq);
+ struct bfq_queue *old_bfqq = bfqq;
+
bfqq = bfq_get_queue(bfqd, bio, false, bic);
bic_set_bfqq(bic, bfqq, false);
+ bfq_release_process_ref(bfqd, old_bfqq);
}
bfqq = bic_to_bfqq(bic, true);
--
2.40.0.rc1.284.g88254d51c5-goog
next prev parent reply other threads:[~2023-03-13 22:30 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-13 22:27 [PATCH v5.10 0/5] bfq bic/cgroup interaction uaf fixes Khazhismel Kumykov
2023-03-13 22:27 ` [PATCH v5.10 1/5] block, bfq: fix possible uaf for 'bfqq->bic' Khazhismel Kumykov
2023-03-13 22:27 ` [PATCH v5.10 2/5] block, bfq: fix uaf for bfqq in bfq_exit_icq_bfqq Khazhismel Kumykov
2023-03-13 22:27 ` [PATCH v5.10 3/5] block/bfq-iosched.c: use "false" rather than "BLK_RW_ASYNC" Khazhismel Kumykov
2023-03-13 22:27 ` [PATCH v5.10 4/5] block, bfq: replace 0/1 with false/true in bic apis Khazhismel Kumykov
2023-03-13 22:27 ` Khazhismel Kumykov [this message]
2023-03-14 2:17 ` [PATCH v5.10 0/5] bfq bic/cgroup interaction uaf fixes Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230313222757.1103179-6-khazhy@google.com \
--to=khazhy@chromium.org \
--cc=axboe@kernel.dk \
--cc=jack@suse.cz \
--cc=khazhy@google.com \
--cc=linux-block@vger.kernel.org \
--cc=sashal@kernel.org \
--cc=shinichiro.kawasaki@wdc.com \
--cc=stable@vger.kernel.org \
--cc=yukuai3@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.