diff options
-rw-r--r-- | block/bio-integrity.c | 10 | ||||
-rw-r--r-- | include/linux/bio.h | 3 |
2 files changed, 6 insertions, 7 deletions
diff --git a/block/bio-integrity.c b/block/bio-integrity.c index 367bb24bb9f1..e84f7fb8694b 100644 --- a/block/bio-integrity.c +++ b/block/bio-integrity.c | |||
@@ -101,7 +101,8 @@ void bio_integrity_free(struct bio *bio) | |||
101 | struct bio_set *bs = bio->bi_pool; | 101 | struct bio_set *bs = bio->bi_pool; |
102 | 102 | ||
103 | if (bip->bip_owns_buf) | 103 | if (bip->bip_owns_buf) |
104 | kfree(bip->bip_buf); | 104 | kfree(page_address(bip->bip_vec->bv_page) + |
105 | bip->bip_vec->bv_offset); | ||
105 | 106 | ||
106 | if (bs) { | 107 | if (bs) { |
107 | if (bip->bip_slab != BIO_POOL_NONE) | 108 | if (bip->bip_slab != BIO_POOL_NONE) |
@@ -219,14 +220,16 @@ static int bio_integrity_generate_verify(struct bio *bio, int operate) | |||
219 | struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev); | 220 | struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev); |
220 | struct blk_integrity_exchg bix; | 221 | struct blk_integrity_exchg bix; |
221 | struct bio_vec *bv; | 222 | struct bio_vec *bv; |
223 | struct bio_integrity_payload *bip = bio_integrity(bio); | ||
222 | sector_t sector; | 224 | sector_t sector; |
223 | unsigned int sectors, ret = 0, i; | 225 | unsigned int sectors, ret = 0, i; |
224 | void *prot_buf = bio_integrity(bio)->bip_buf; | 226 | void *prot_buf = page_address(bip->bip_vec->bv_page) + |
227 | bip->bip_vec->bv_offset; | ||
225 | 228 | ||
226 | if (operate) | 229 | if (operate) |
227 | sector = bio->bi_iter.bi_sector; | 230 | sector = bio->bi_iter.bi_sector; |
228 | else | 231 | else |
229 | sector = bio_integrity(bio)->bip_iter.bi_sector; | 232 | sector = bip->bip_iter.bi_sector; |
230 | 233 | ||
231 | bix.disk_name = bio->bi_bdev->bd_disk->disk_name; | 234 | bix.disk_name = bio->bi_bdev->bd_disk->disk_name; |
232 | bix.sector_size = bi->sector_size; | 235 | bix.sector_size = bi->sector_size; |
@@ -321,7 +324,6 @@ int bio_integrity_prep(struct bio *bio) | |||
321 | } | 324 | } |
322 | 325 | ||
323 | bip->bip_owns_buf = 1; | 326 | bip->bip_owns_buf = 1; |
324 | bip->bip_buf = buf; | ||
325 | bip->bip_iter.bi_size = len; | 327 | bip->bip_iter.bi_size = len; |
326 | bip->bip_iter.bi_sector = bio->bi_iter.bi_sector; | 328 | bip->bip_iter.bi_sector = bio->bi_iter.bi_sector; |
327 | 329 | ||
diff --git a/include/linux/bio.h b/include/linux/bio.h index 63a0e53e238c..448d8c052cb7 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h | |||
@@ -310,9 +310,6 @@ struct bio_integrity_payload { | |||
310 | 310 | ||
311 | struct bvec_iter bip_iter; | 311 | struct bvec_iter bip_iter; |
312 | 312 | ||
313 | /* kill - should just use bip_vec */ | ||
314 | void *bip_buf; /* generated integrity data */ | ||
315 | |||
316 | bio_end_io_t *bip_end_io; /* saved I/O completion fn */ | 313 | bio_end_io_t *bip_end_io; /* saved I/O completion fn */ |
317 | 314 | ||
318 | unsigned short bip_slab; /* slab the bip came from */ | 315 | unsigned short bip_slab; /* slab the bip came from */ |