bio_sectors returns the value in the units of 512-byte sectors (no matter what's the real sector size of the device). dm-crypt multiplies bio_sectors by on_disk_tag_size to calculate the space allocated for integrity tags. If dm-crypt is running with sector size larger than 512, it allocates more data than what's needed. Device mapper trimmed this extra space when passing the bio to dm-integrity, so this bug didn't result in any visible misbehavior. This bug showed up when device mapper stopped trimming the bio. Signed-off-by: Mikulas Patocka <mpatocka@xxxxxxxxxx> Reported-by: Milan Broz <mbroz@xxxxxxxxxx> --- drivers/md/dm-crypt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: linux-2.6/drivers/md/dm-crypt.c =================================================================== --- linux-2.6.orig/drivers/md/dm-crypt.c 2019-02-08 14:12:19.000000000 +0100 +++ linux-2.6/drivers/md/dm-crypt.c 2019-02-08 14:12:19.000000000 +0100 @@ -932,7 +932,7 @@ static int dm_crypt_integrity_io_alloc(s if (IS_ERR(bip)) return PTR_ERR(bip); - tag_len = io->cc->on_disk_tag_size * bio_sectors(bio); + tag_len = io->cc->on_disk_tag_size * (bio_sectors(bio) >> io->cc->sector_shift); bip->bip_iter.bi_size = tag_len; bip->bip_iter.bi_sector = io->cc->start + io->sector; -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel