Commit 5991bfa3 authored by Jens Axboe's avatar Jens Axboe
Browse files

block: fix folio leak in bio_iov_iter_bounce_read()



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: 8dd5e7c7 ("block: add helpers to bounce buffer an iov_iter into bios")
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 5b88af71
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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;