Commit 422f1d4f141e for kernel

commit 422f1d4f141eaa3a6e4199ceec86cc6b9bf26570
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Fri Jul 10 18:32:49 2026 +0200

    dm-bufio: fix wrong count calculation in dm_bufio_issue_discard

    block_to_sector converts a block number to a sector number and adds
    c->start to the result. It is inappropriate to use this function for
    converting the number of blocks to a number to sectors because c->start
    would be incorrectly added to the result.

    Luckily, the only target that uses dm_bufio_issue_discard is dm-ebs,
    which sets c->start to 0, so this bug is latent.

    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Assisted-by: Claude:claude-opus-4-6
    Fixes: 6fbeb0048e6b ("dm bufio: implement discard")
    Cc: stable@vger.kernel.org

diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c
index 26fedf5883ef..a458b9fd2fcd 100644
--- a/drivers/md/dm-bufio.c
+++ b/drivers/md/dm-bufio.c
@@ -2238,7 +2238,9 @@ int dm_bufio_issue_discard(struct dm_bufio_client *c, sector_t block, sector_t c
 	struct dm_io_region io_reg = {
 		.bdev = c->bdev,
 		.sector = block_to_sector(c, block),
-		.count = block_to_sector(c, count),
+		.count = likely(c->sectors_per_block_bits >= 0) ?
+			count << c->sectors_per_block_bits :
+			count * (c->block_size >> SECTOR_SHIFT),
 	};

 	if (WARN_ON_ONCE(dm_bufio_in_request()))