block: don't dereference request after flush insertion
authorJens Axboe <axboe@kernel.dk>
Sat, 16 Oct 2021 13:34:49 +0000 (07:34 -0600)
committerJens Axboe <axboe@kernel.dk>
Mon, 18 Oct 2021 12:17:18 +0000 (06:17 -0600)
commit4a60f360a5c9533d77db011db6766448f763c86a
tree3e401b78cec3cc16ca37ef51932392b70b00552e
parent0f38d76646157357fcfa02f50575ea044830c494
block: don't dereference request after flush insertion

We could have a race here, where the request gets freed before we call
into blk_mq_run_hw_queue(). If this happens, we cannot rely on the state
of the request.

Grab the hardware context before inserting the flush.

Fixes: 0f38d7664615 ("blk-mq: cleanup blk_mq_submit_bio")
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-mq.c