crypto: sun8i-ss - fix infinite loop in sun8i_ss_setup_ivs()
authorAlexey Khoroshilov <khoroshilov@ispras.ru>
Fri, 10 Jun 2022 18:27:15 +0000 (21:27 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Aug 2022 12:23:20 +0000 (14:23 +0200)
[ Upstream commit d61a7b3decf7f0cf4121a7204303deefd2c7151b ]

There is no i decrement in while (i >= 0) loop.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Fixes: 359e893e8af4 ("crypto: sun8i-ss - rework handling of IV")
Acked-by: Corentin Labbe <clabbe.montjoie@gmail.com>
Tested-by: Corentin Labbe <clabbe.montjoie@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c

index 70e2e6e..3c46ad8 100644 (file)
@@ -151,6 +151,7 @@ dma_iv_error:
        while (i >= 0) {
                dma_unmap_single(ss->dev, rctx->p_iv[i], ivsize, DMA_TO_DEVICE);
                memzero_explicit(sf->iv[i], ivsize);
+               i--;
        }
        return err;
 }