]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
cypto: mediatek - fix leaks in mtk_desc_ring_alloc
authorXiaoliang Pang <dawning.pang@gmail.com>
Mon, 14 Sep 2020 03:00:51 +0000 (11:00 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Oct 2020 08:55:03 +0000 (09:55 +0100)
[ Upstream commit 228d284aac61283cde508a925d666f854b57af63 ]

In the init loop, if an error occurs in function 'dma_alloc_coherent',
then goto the err_cleanup section, after run i--,
in the array ring, the struct mtk_ring with index i will not be released,
causing memory leaks

Fixes: 785e5c616c849 ("crypto: mediatek - Add crypto driver support for some MediaTek chips")
Cc: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Xiaoliang Pang <dawning.pang@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/crypto/mediatek/mtk-platform.c

index 03b1436f87096cc93ade37bac628ed5d74180612..e4d7ef3bfb61d3a4a9e90eb8c2434d1ee65779a7 100644 (file)
@@ -473,13 +473,13 @@ static int mtk_desc_ring_alloc(struct mtk_cryp *cryp)
        return 0;
 
 err_cleanup:
-       for (; i--; ) {
+       do {
                dma_free_coherent(cryp->dev, MTK_DESC_RING_SZ,
                                  ring[i]->res_base, ring[i]->res_dma);
                dma_free_coherent(cryp->dev, MTK_DESC_RING_SZ,
                                  ring[i]->cmd_base, ring[i]->cmd_dma);
                kfree(ring[i]);
-       }
+       } while (i--);
        return -ENOMEM;
 }