block, bfq: fix uaf for bfqq in bic_set_bfqq()
authorYu Kuai <yukuai3@huawei.com>
Mon, 30 Jan 2023 01:41:36 +0000 (09:41 +0800)
committerJens Axboe <axboe@kernel.dk>
Mon, 30 Jan 2023 01:57:01 +0000 (18:57 -0700)
commitb600de2d7d3a16f9007fad1bdae82a3951a26af2
tree4a676a3d482d0f4e89c2468d341b28895d62d26e
parentdb3ba974c2bc895ba39689a364cb7a49c0fe779f
block, bfq: fix uaf for bfqq in bic_set_bfqq()

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>
block/bfq-cgroup.c
block/bfq-iosched.c