mirror of https://gitee.com/openkylin/linux.git
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
This commit is contained in:
commit
93bd38b31f
|
@ -216,9 +216,10 @@ static int bio_integrity_process(struct bio *bio,
|
||||||
{
|
{
|
||||||
struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev);
|
struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev);
|
||||||
struct blk_integrity_iter iter;
|
struct blk_integrity_iter iter;
|
||||||
struct bio_vec *bv;
|
struct bvec_iter bviter;
|
||||||
|
struct bio_vec bv;
|
||||||
struct bio_integrity_payload *bip = bio_integrity(bio);
|
struct bio_integrity_payload *bip = bio_integrity(bio);
|
||||||
unsigned int i, ret = 0;
|
unsigned int ret = 0;
|
||||||
void *prot_buf = page_address(bip->bip_vec->bv_page) +
|
void *prot_buf = page_address(bip->bip_vec->bv_page) +
|
||||||
bip->bip_vec->bv_offset;
|
bip->bip_vec->bv_offset;
|
||||||
|
|
||||||
|
@ -227,11 +228,11 @@ static int bio_integrity_process(struct bio *bio,
|
||||||
iter.seed = bip_get_seed(bip);
|
iter.seed = bip_get_seed(bip);
|
||||||
iter.prot_buf = prot_buf;
|
iter.prot_buf = prot_buf;
|
||||||
|
|
||||||
bio_for_each_segment_all(bv, bio, i) {
|
bio_for_each_segment(bv, bio, bviter) {
|
||||||
void *kaddr = kmap_atomic(bv->bv_page);
|
void *kaddr = kmap_atomic(bv.bv_page);
|
||||||
|
|
||||||
iter.data_buf = kaddr + bv->bv_offset;
|
iter.data_buf = kaddr + bv.bv_offset;
|
||||||
iter.data_size = bv->bv_len;
|
iter.data_size = bv.bv_len;
|
||||||
|
|
||||||
ret = proc_fn(&iter);
|
ret = proc_fn(&iter);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
|
Loading…
Reference in New Issue