This is a note to let you know that I've just added the patch titled block: fix "check bi_size overflow before merge" to the 5.3-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: block-fix-check-bi_size-overflow-before-merge.patch and it can be found in the queue-5.3 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. commit 1866123cb4b67207441fcb73d86a919a46b73531 Author: Andreas Gruenbacher <agruenba@xxxxxxxxxx> Date: Mon Dec 9 20:11:14 2019 +0100 block: fix "check bi_size overflow before merge" [ Upstream commit cc90bc68422318eb8e75b15cd74bc8d538a7df29 ] This partially reverts commit e3a5d8e386c3fb973fa75f2403622a8f3640ec06. Commit e3a5d8e386c3 ("check bi_size overflow before merge") adds a bio_full check to __bio_try_merge_page. This will cause __bio_try_merge_page to fail when the last bi_io_vec has been reached. Instead, what we want here is only the bi_size overflow check. Fixes: e3a5d8e386c3 ("block: check bi_size overflow before merge") Cc: stable@xxxxxxxxxxxxxxx # v5.4+ Reviewed-by: Ming Lei <ming.lei@xxxxxxxxxx> Signed-off-by: Andreas Gruenbacher <agruenba@xxxxxxxxxx> Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> diff --git a/block/bio.c b/block/bio.c index 31d56e7e2ce05..853e2a2ec4d9a 100644 --- a/block/bio.c +++ b/block/bio.c @@ -769,10 +769,12 @@ bool __bio_try_merge_page(struct bio *bio, struct page *page, if (WARN_ON_ONCE(bio_flagged(bio, BIO_CLONED))) return false; - if (bio->bi_vcnt > 0 && !bio_full(bio, len)) { + if (bio->bi_vcnt > 0) { struct bio_vec *bv = &bio->bi_io_vec[bio->bi_vcnt - 1]; if (page_is_mergeable(bv, page, len, off, same_page)) { + if (bio->bi_iter.bi_size > UINT_MAX - len) + return false; bv->bv_len += len; bio->bi_iter.bi_size += len; return true;