aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--block/bio-integrity.c10
-rw-r--r--include/linux/bio.h3
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 */