Skip to content

Commit 7c0a74f

Browse files
calebsanderkawasaki
authored andcommitted
bio-integrity-fs: pass data iter to bio_integrity_verify()
bio_integrity_verify() expects the passed struct bvec_iter to be an iterator over bio data, not integrity. So construct a separate data bvec_iter without the bio_integrity_bytes() conversion and pass it to bio_integrity_verify() instead of bip_iter. Fixes: 0bde8a1 ("block: add fs_bio_integrity helpers") Signed-off-by: Caleb Sander Mateos <[email protected]> Reviewed-by: Anuj Gupta <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
1 parent 695fe97 commit 7c0a74f

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

block/bio-integrity-fs.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ int fs_bio_integrity_verify(struct bio *bio, sector_t sector, unsigned int size)
5555
{
5656
struct blk_integrity *bi = blk_get_integrity(bio->bi_bdev->bd_disk);
5757
struct bio_integrity_payload *bip = bio_integrity(bio);
58+
struct bvec_iter data_iter = {
59+
.bi_sector = sector,
60+
.bi_size = size,
61+
};
5862

5963
/*
6064
* Reinitialize bip->bip_iter.
@@ -65,7 +69,7 @@ int fs_bio_integrity_verify(struct bio *bio, sector_t sector, unsigned int size)
6569
memset(&bip->bip_iter, 0, sizeof(bip->bip_iter));
6670
bip->bip_iter.bi_sector = sector;
6771
bip->bip_iter.bi_size = bio_integrity_bytes(bi, size >> SECTOR_SHIFT);
68-
return blk_status_to_errno(bio_integrity_verify(bio, &bip->bip_iter));
72+
return blk_status_to_errno(bio_integrity_verify(bio, &data_iter));
6973
}
7074

7175
static int __init fs_bio_integrity_init(void)

0 commit comments

Comments
 (0)