[dm-devel] [PATCH 5.20 1/4] block: add bio_rewind() API
Eric Biggers
ebiggers at kernel.org
Sun Jun 26 21:37:22 UTC 2022
On Fri, Jun 24, 2022 at 10:12:52PM +0800, Ming Lei wrote:
> diff --git a/block/blk-crypto.c b/block/blk-crypto.c
> index a496aaef85ba..caae2f429fc7 100644
> --- a/block/blk-crypto.c
> +++ b/block/blk-crypto.c
> @@ -134,6 +134,21 @@ void bio_crypt_dun_increment(u64 dun[BLK_CRYPTO_DUN_ARRAY_SIZE],
> }
> }
>
> +/* Decrements @dun by @dec, treating @dun as a multi-limb integer. */
> +void bio_crypt_dun_decrement(u64 dun[BLK_CRYPTO_DUN_ARRAY_SIZE],
> + unsigned int dec)
> +{
> + int i;
> +
> + for (i = 0; dec && i < BLK_CRYPTO_DUN_ARRAY_SIZE; i++) {
> + dun[i] -= dec;
> + if (dun[i] > inc)
> + dec = 1;
> + else
> + dec = 0;
> + }
> +}
This doesn't compile. Also this doesn't handle underflow into the next limb
correctly. A correct version would be:
u64 prev = dun[i];
dun[i] -= dec;
if (dun[i] > prev)
dec = 1;
else
dec = 0;
- Eric
More information about the dm-devel
mailing list