diff --git a/[refs] b/[refs] index 8aa108b22356..b8a65a814328 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f80a557008462a0a4adef25407f1872e793d8dd5 +refs/heads/master: d659e6cc98766a1a61d6bdd283f95d149abd7719 diff --git a/trunk/drivers/md/dm-io.c b/trunk/drivers/md/dm-io.c index f14813be4eff..36e2b5e46a6b 100644 --- a/trunk/drivers/md/dm-io.c +++ b/trunk/drivers/md/dm-io.c @@ -292,6 +292,8 @@ static void do_region(int rw, unsigned region, struct dm_io_region *where, (PAGE_SIZE >> SECTOR_SHIFT)); num_bvecs = 1 + min_t(int, bio_get_nr_vecs(where->bdev), num_bvecs); + if (unlikely(num_bvecs > BIO_MAX_PAGES)) + num_bvecs = BIO_MAX_PAGES; bio = bio_alloc_bioset(GFP_NOIO, num_bvecs, io->client->bios); bio->bi_sector = where->sector + (where->count - remaining); bio->bi_bdev = where->bdev;