crypto: stm32 - fix loop iterating through scatterlist for DMA
authorThomas Bourgoin <thomas.bourgoin@foss.st.com>
Thu, 13 Jul 2023 15:15:15 +0000 (17:15 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sat, 22 Jul 2023 01:59:38 +0000 (13:59 +1200)
We were reading the length of the scatterlist sg after copying value of
tsg inside.
So we are using the size of the previous scatterlist and for the first
one we are using an unitialised value.
Fix this by copying tsg in sg[0] before reading the size.

Fixes : 8a1012d3f2ab ("crypto: stm32 - Support for STM32 HASH module")
Cc: stable@vger.kernel.org
Signed-off-by: Thomas Bourgoin <thomas.bourgoin@foss.st.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/stm32/stm32-hash.c

index c179a6c1a457c2059477490001648465f4d56d51..519fb716acee2b83faa1e1d029236742843e1196 100644 (file)
@@ -678,9 +678,9 @@ static int stm32_hash_dma_send(struct stm32_hash_dev *hdev)
        }
 
        for_each_sg(rctx->sg, tsg, rctx->nents, i) {
+               sg[0] = *tsg;
                len = sg->length;
 
-               sg[0] = *tsg;
                if (sg_is_last(sg)) {
                        if (hdev->dma_mode == 1) {
                                len = (ALIGN(sg->length, 16) - 16);