Commit 93bd38b31f5169a8f822de15a01abddd2fc8bcd7

Authored by Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.dk/linux-block

Pull block core regression fix from Jens Axboe:
 "Single fix for a regression introduced in this development cycle,
  where dm on top of dif/dix is broken.  From Darrick Wong"

* 'for-linus' of git://git.kernel.dk/linux-block:
  block: fix regression where bio_integrity_process uses wrong bio_vec iterator

Showing 1 changed file Side-by-side Diff

block/bio-integrity.c
... ... @@ -216,9 +216,10 @@
216 216 {
217 217 struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev);
218 218 struct blk_integrity_iter iter;
219   - struct bio_vec *bv;
  219 + struct bvec_iter bviter;
  220 + struct bio_vec bv;
220 221 struct bio_integrity_payload *bip = bio_integrity(bio);
221   - unsigned int i, ret = 0;
  222 + unsigned int ret = 0;
222 223 void *prot_buf = page_address(bip->bip_vec->bv_page) +
223 224 bip->bip_vec->bv_offset;
224 225  
225 226  
... ... @@ -227,11 +228,11 @@
227 228 iter.seed = bip_get_seed(bip);
228 229 iter.prot_buf = prot_buf;
229 230  
230   - bio_for_each_segment_all(bv, bio, i) {
231   - void *kaddr = kmap_atomic(bv->bv_page);
  231 + bio_for_each_segment(bv, bio, bviter) {
  232 + void *kaddr = kmap_atomic(bv.bv_page);
232 233  
233   - iter.data_buf = kaddr + bv->bv_offset;
234   - iter.data_size = bv->bv_len;
  234 + iter.data_buf = kaddr + bv.bv_offset;
  235 + iter.data_size = bv.bv_len;
235 236  
236 237 ret = proc_fn(&iter);
237 238 if (ret) {