]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
bio-integrity-fs: pass data iter to bio_integrity_verify()
authorCaleb Sander Mateos <csander@purestorage.com>
Wed, 13 May 2026 18:29:21 +0000 (12:29 -0600)
committerJens Axboe <axboe@kernel.dk>
Tue, 19 May 2026 17:38:21 +0000 (11:38 -0600)
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: 0bde8a12b554 ("block: add fs_bio_integrity helpers")
Signed-off-by: Caleb Sander Mateos <csander@purestorage.com>
Reviewed-by: Anuj Gupta <anuj20.g@samsung.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://patch.msgid.link/20260513182924.1753582-1-csander@purestorage.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bio-integrity-fs.c

index acb1e5f270d2bc6e2c6ae7c6044dfb956d04468a..0daa42d9ead7756d404b7dc6a406bb4b1c0b1a7b 100644 (file)
@@ -55,6 +55,10 @@ int fs_bio_integrity_verify(struct bio *bio, sector_t sector, unsigned int size)
 {
        struct blk_integrity *bi = blk_get_integrity(bio->bi_bdev->bd_disk);
        struct bio_integrity_payload *bip = bio_integrity(bio);
+       struct bvec_iter data_iter = {
+               .bi_sector      = sector,
+               .bi_size        = size,
+       };
 
        /*
         * Reinitialize bip->bip_iter.
@@ -65,7 +69,7 @@ int fs_bio_integrity_verify(struct bio *bio, sector_t sector, unsigned int size)
        memset(&bip->bip_iter, 0, sizeof(bip->bip_iter));
        bip->bip_iter.bi_sector = sector;
        bip->bip_iter.bi_size = bio_integrity_bytes(bi, size >> SECTOR_SHIFT);
-       return blk_status_to_errno(bio_integrity_verify(bio, &bip->bip_iter));
+       return blk_status_to_errno(bio_integrity_verify(bio, &data_iter));
 }
 
 static int __init fs_bio_integrity_init(void)