]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
block: fix folio leak in bio_iov_iter_bounce_read()
authorJens Axboe <axboe@kernel.dk>
Thu, 12 Feb 2026 11:07:41 +0000 (04:07 -0700)
committerJens Axboe <axboe@kernel.dk>
Thu, 12 Feb 2026 11:15:02 +0000 (04:15 -0700)
If iov_iter_extract_bvecs() returns an error or zero bytes extracted,
then the folio allocated is leaked on return. Ensure it's put before
returning.

Fixes: 8dd5e7c75d7b ("block: add helpers to bounce buffer an iov_iter into bios")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bio.c

index b291b9aaeee1df60c1318f2e9288f35a973c75db..8203bb7455a9f1cec2a3f7ca099951eb70e88b49 100644 (file)
@@ -1382,8 +1382,10 @@ static int bio_iov_iter_bounce_read(struct bio *bio, struct iov_iter *iter)
                ret = iov_iter_extract_bvecs(iter, bio->bi_io_vec + 1, len,
                                &bio->bi_vcnt, bio->bi_max_vecs - 1, 0);
                if (ret <= 0) {
-                       if (!bio->bi_vcnt)
+                       if (!bio->bi_vcnt) {
+                               folio_put(folio);
                                return ret;
+                       }
                        break;
                }
                len -= ret;