block: fix blk_mq_attempt_bio_merge and rq_qos_throttle protection
authorShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Tue, 8 Mar 2022 08:09:15 +0000 (17:09 +0900)
committerJens Axboe <axboe@kernel.dk>
Wed, 9 Mar 2022 00:48:39 +0000 (17:48 -0700)
commit0a5aa8d161d19a1b12fd25b434b32f7c885c73bb
treec210cb834f618202ce257ca3085992afe4d5ed5a
parent30939293262eb433c960c4532a0d59c4073b2b84
block: fix blk_mq_attempt_bio_merge and rq_qos_throttle protection

Commit 9d497e2941c3 ("block: don't protect submit_bio_checks by
q_usage_counter") moved blk_mq_attempt_bio_merge and rq_qos_throttle
calls out of q_usage_counter protection. However, these functions require
q_usage_counter protection. The blk_mq_attempt_bio_merge call without
the protection resulted in blktests block/005 failure with KASAN null-
ptr-deref or use-after-free at bio merge. The rq_qos_throttle call
without the protection caused kernel hang at qos throttle.

To fix the failures, move the blk_mq_attempt_bio_merge and
rq_qos_throttle calls back to q_usage_counter protection.

Fixes: 9d497e2941c3 ("block: don't protect submit_bio_checks by q_usage_counter")
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Link: https://lore.kernel.org/r/20220308080915.3473689-1-shinichiro.kawasaki@wdc.com
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-mq.c