]> git.baikalelectronics.ru Git - kernel.git/commitdiff
dm bufio: subtract the number of initial sectors in dm_bufio_get_device_size
authorMikulas Patocka <mpatocka@redhat.com>
Tue, 23 Feb 2021 20:21:20 +0000 (21:21 +0100)
committerMike Snitzer <snitzer@redhat.com>
Thu, 4 Mar 2021 19:53:54 +0000 (14:53 -0500)
dm_bufio_get_device_size returns the device size in blocks. Before
returning the value, we must subtract the nubmer of starting
sectors. The number of starting sectors may not be divisible by block
size.

Note that currently, no target is using dm_bufio_set_sector_offset and
dm_bufio_get_device_size simultaneously, so this change has no effect.
However, an upcoming dm-verity-fec fix needs this change.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Reviewed-by: Milan Broz <gmazyland@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-bufio.c

index fce4cbf9529d6c85e5f7df6e99eb71db2c1df053..50f3e673729c351b3e9173d8303728091bef14b1 100644 (file)
@@ -1526,6 +1526,10 @@ EXPORT_SYMBOL_GPL(dm_bufio_get_block_size);
 sector_t dm_bufio_get_device_size(struct dm_bufio_client *c)
 {
        sector_t s = i_size_read(c->bdev->bd_inode) >> SECTOR_SHIFT;
+       if (s >= c->start)
+               s -= c->start;
+       else
+               s = 0;
        if (likely(c->sectors_per_block_bits >= 0))
                s >>= c->sectors_per_block_bits;
        else