cypto: mediatek - fix leaks in mtk_desc_ring_alloc
[ Upstream commit5.4-rM2-2.2.x-imx-squashed228d284aac
] 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:785e5c616c
("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>
parent
cc0f250409
commit
7fb271426a
|
@ -469,13 +469,13 @@ static int mtk_desc_ring_alloc(struct mtk_cryp *cryp)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_cleanup:
|
err_cleanup:
|
||||||
for (; i--; ) {
|
do {
|
||||||
dma_free_coherent(cryp->dev, MTK_DESC_RING_SZ,
|
dma_free_coherent(cryp->dev, MTK_DESC_RING_SZ,
|
||||||
ring[i]->res_base, ring[i]->res_dma);
|
ring[i]->res_base, ring[i]->res_dma);
|
||||||
dma_free_coherent(cryp->dev, MTK_DESC_RING_SZ,
|
dma_free_coherent(cryp->dev, MTK_DESC_RING_SZ,
|
||||||
ring[i]->cmd_base, ring[i]->cmd_dma);
|
ring[i]->cmd_base, ring[i]->cmd_dma);
|
||||||
kfree(ring[i]);
|
kfree(ring[i]);
|
||||||
}
|
} while (i--);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue