block: Fix flush request sector restore
authorDamien Le Moal <dlemoal@kernel.org>
Wed, 1 May 2024 11:09:01 +0000 (20:09 +0900)
committerJens Axboe <axboe@kernel.dk>
Wed, 1 May 2024 14:08:43 +0000 (08:08 -0600)
Make sure that a request bio is not NULL before trying to restore the
request start sector.

Reported-by: Yi Zhang <yi.zhang@redhat.com>
Fixes: 6f8fd758de63 ("block: Restore sector of flush requests")
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Link: https://lore.kernel.org/r/20240501110907.96950-9-dlemoal@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-flush.c

index 2f58ae01846455871b06780fb833c41d9680100a..c17cf8ed8113db5826be4d7af1c3ce44486e3a01 100644 (file)
@@ -130,7 +130,8 @@ static void blk_flush_restore_request(struct request *rq)
         * original @rq->bio.  Restore it.
         */
        rq->bio = rq->biotail;
-       rq->__sector = rq->bio->bi_iter.bi_sector;
+       if (rq->bio)
+               rq->__sector = rq->bio->bi_iter.bi_sector;
 
        /* make @rq a normal request */
        rq->rq_flags &= ~RQF_FLUSH_SEQ;