{
        struct bio_vec *bvec = bio_first_bvec_all(bio) + i;
 
+       if (unlikely(i >= bio->bi_vcnt)) {
+               fi->folio = NULL;
+               return;
+       }
+
        fi->folio = page_folio(bvec->bv_page);
        fi->offset = bvec->bv_offset +
                        PAGE_SIZE * (bvec->bv_page - &fi->folio->page);
                fi->offset = 0;
                fi->length = min(folio_size(fi->folio), fi->_seg_count);
                fi->_next = folio_next(fi->folio);
-       } else if (fi->_i + 1 < bio->bi_vcnt) {
-               bio_first_folio(fi, bio, fi->_i + 1);
        } else {
-               fi->folio = NULL;
+               bio_first_folio(fi, bio, fi->_i + 1);
        }
 }