]> git.hungrycats.org Git - linux/commitdiff
block: fix merging data-less bios
authorKeith Busch <kbusch@kernel.org>
Tue, 11 Nov 2025 14:06:20 +0000 (06:06 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 14 Sep 2026 11:36:18 +0000 (13:36 +0200)
[ Upstream commit fd9ecd005252b595fd02ff7fcc4056251027404d ]

The data segment gaps the block layer tracks doesn't apply to bio's that
don't have data. Skip calculating this to fix a NULL pointer access.

Fixes: 2f6b2565d43cdb5 ("block: accumulate memory segment gaps per bio")
Reported-by: Matthew Wilcox <willy@infradead.org>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Reviewed-by: Yu Kuai <yukuai@fnnas.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
block/blk-merge.c

index c2f47522be856779bd0afbdc7031f03d5fb53ad0..5d895c7898984b52c1b76b45e444b314cc1a951d 100644 (file)
@@ -748,6 +748,9 @@ u8 bio_seg_gap(struct request_queue *q, struct bio *prev, struct bio *next,
 {
        struct bio_vec pb, nb;
 
+       if (!bio_has_data(prev))
+               return 0;
+
        gaps_bit = min_not_zero(gaps_bit, prev->bi_bvec_gap_bit);
        gaps_bit = min_not_zero(gaps_bit, next->bi_bvec_gap_bit);