2019-07-31 00:23:02

by Gary R Hook

[permalink] [raw]
Subject: [PATCH v2] crypto:ccp - Clean up and exit correctly on allocation failure

From: Gary R Hook <[email protected]>

Return and fail driver initialization if a DMA pool or coherent memory
can't be allocated. Be sure to clean up allocated memory.

Fixes: 4b394a232df7 ("crypto: ccp - Let a v5 CCP provide the same function as v3")

Signed-off-by: Gary R Hook <[email protected]>
---

Changes since v1:
- Switch to devm allocation where appropriate

drivers/crypto/ccp/ccp-dev-v5.c | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/drivers/crypto/ccp/ccp-dev-v5.c b/drivers/crypto/ccp/ccp-dev-v5.c
index f146b51a23a5..9ee72cf46a0f 100644
--- a/drivers/crypto/ccp/ccp-dev-v5.c
+++ b/drivers/crypto/ccp/ccp-dev-v5.c
@@ -803,6 +803,7 @@ static int ccp5_init(struct ccp_device *ccp)
if (!dma_pool) {
dev_err(dev, "unable to allocate dma pool\n");
ret = -ENOMEM;
+ goto e_pool;
}

cmd_q = &ccp->cmd_q[ccp->cmd_q_count];
@@ -816,9 +817,9 @@ static int ccp5_init(struct ccp_device *ccp)
/* Page alignment satisfies our needs for N <= 128 */
BUILD_BUG_ON(COMMANDS_PER_QUEUE > 128);
cmd_q->qsize = Q_SIZE(Q_DESC_SIZE);
- cmd_q->qbase = dma_alloc_coherent(dev, cmd_q->qsize,
- &cmd_q->qbase_dma,
- GFP_KERNEL);
+ cmd_q->qbase = dmam_alloc_coherent(dev, cmd_q->qsize,
+ &cmd_q->qbase_dma,
+ GFP_KERNEL);
if (!cmd_q->qbase) {
dev_err(dev, "unable to allocate command queue\n");
ret = -ENOMEM;
@@ -994,7 +995,6 @@ static int ccp5_init(struct ccp_device *ccp)

static void ccp5_destroy(struct ccp_device *ccp)
{
- struct device *dev = ccp->dev;
struct ccp_cmd_queue *cmd_q;
struct ccp_cmd *cmd;
unsigned int i;
@@ -1037,12 +1037,6 @@ static void ccp5_destroy(struct ccp_device *ccp)

sp_free_ccp_irq(ccp->sp, ccp);

- for (i = 0; i < ccp->cmd_q_count; i++) {
- cmd_q = &ccp->cmd_q[i];
- dma_free_coherent(dev, cmd_q->qsize, cmd_q->qbase,
- cmd_q->qbase_dma);
- }
-
/* Flush the cmd and backlog queue */
while (!list_empty(&ccp->cmd)) {
/* Invoke the callback directly with an error code */
--
2.17.1


2019-08-09 06:19:10

by Herbert Xu

[permalink] [raw]
Subject: Re: [PATCH v2] crypto:ccp - Clean up and exit correctly on allocation failure

On Wed, Jul 31, 2019 at 12:03:25AM +0000, Hook, Gary wrote:
> From: Gary R Hook <[email protected]>
>
> Return and fail driver initialization if a DMA pool or coherent memory
> can't be allocated. Be sure to clean up allocated memory.
>
> Fixes: 4b394a232df7 ("crypto: ccp - Let a v5 CCP provide the same function as v3")
>
> Signed-off-by: Gary R Hook <[email protected]>
> ---
>
> Changes since v1:
> - Switch to devm allocation where appropriate
>
> drivers/crypto/ccp/ccp-dev-v5.c | 14 ++++----------
> 1 file changed, 4 insertions(+), 10 deletions(-)

Patch applied. Thanks.
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt