]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Sep 2023 07:43:04 +0000 (09:43 +0200)
commit d9c83f71eeceed2cb54bb78be84f2d4055fd9a1f upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/crypto/stm32/stm32-hash.c

index e3f765434d64ea41fb03bd90717d7d7619b58888..4df5330afaa1db37215c823680b0dd0d608497b7 100644 (file)
@@ -565,9 +565,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);