]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
block: handle huge zero folios in bio_free_folios
authorChristoph Hellwig <hch@lst.de>
Thu, 16 Jul 2026 09:12:45 +0000 (11:12 +0200)
committerJens Axboe <axboe@kernel.dk>
Thu, 16 Jul 2026 12:11:37 +0000 (06:11 -0600)
When CONFIG_PERSISTENT_HUGE_ZERO_FOLIO is enabled, iomap_dio_zero() can
add a huge zero folio to a zeroing bio, which needs special treatment
in bio_free_folios by also checking is_huge_zero_folio() in addition to
is_zero_folio().

Fixes: 8dd5e7c75d7b ("block: add helpers to bounce buffer an iov_iter into bios")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@kernel.org>
Link: https://patch.msgid.link/20260716091306.316625-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bio.c

index de56d3f10c56da78718960930c530e136466a779..ebb6d3e53ac39e359dd1da7c2e3a28b6e429a48f 100644 (file)
@@ -1311,7 +1311,7 @@ static void bio_free_folios(struct bio *bio)
        bio_for_each_bvec_all(bv, bio, i) {
                struct folio *folio = bvec_folio(bv);
 
-               if (!is_zero_folio(folio))
+               if (!is_zero_folio(folio) && !is_huge_zero_folio(folio))
                        folio_put(folio);
        }
 }