Commit 5829cc8d authored by Eric Biggers's avatar Eric Biggers Committed by Herbert Xu

crypto: qat - Clean up error handling in qat_dh_set_secret()

Update the error handling in qat_dh_set_secret() to mirror
dh_set_secret().  The new version is less error-prone because freeing
memory and setting the pointers to NULL is now only done in one place.
Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent ccd9888f
...@@ -462,11 +462,8 @@ static int qat_dh_set_params(struct qat_dh_ctx *ctx, struct dh *params) ...@@ -462,11 +462,8 @@ static int qat_dh_set_params(struct qat_dh_ctx *ctx, struct dh *params)
} }
ctx->g = dma_zalloc_coherent(dev, ctx->p_size, &ctx->dma_g, GFP_KERNEL); ctx->g = dma_zalloc_coherent(dev, ctx->p_size, &ctx->dma_g, GFP_KERNEL);
if (!ctx->g) { if (!ctx->g)
dma_free_coherent(dev, ctx->p_size, ctx->p, ctx->dma_p);
ctx->p = NULL;
return -ENOMEM; return -ENOMEM;
}
memcpy(ctx->g + (ctx->p_size - params->g_size), params->g, memcpy(ctx->g + (ctx->p_size - params->g_size), params->g,
params->g_size); params->g_size);
...@@ -507,18 +504,22 @@ static int qat_dh_set_secret(struct crypto_kpp *tfm, const void *buf, ...@@ -507,18 +504,22 @@ static int qat_dh_set_secret(struct crypto_kpp *tfm, const void *buf,
ret = qat_dh_set_params(ctx, &params); ret = qat_dh_set_params(ctx, &params);
if (ret < 0) if (ret < 0)
return ret; goto err_clear_ctx;
ctx->xa = dma_zalloc_coherent(dev, ctx->p_size, &ctx->dma_xa, ctx->xa = dma_zalloc_coherent(dev, ctx->p_size, &ctx->dma_xa,
GFP_KERNEL); GFP_KERNEL);
if (!ctx->xa) { if (!ctx->xa) {
qat_dh_clear_ctx(dev, ctx); ret = -ENOMEM;
return -ENOMEM; goto err_clear_ctx;
} }
memcpy(ctx->xa + (ctx->p_size - params.key_size), params.key, memcpy(ctx->xa + (ctx->p_size - params.key_size), params.key,
params.key_size); params.key_size);
return 0; return 0;
err_clear_ctx:
qat_dh_clear_ctx(dev, ctx);
return ret;
} }
static unsigned int qat_dh_max_size(struct crypto_kpp *tfm) static unsigned int qat_dh_max_size(struct crypto_kpp *tfm)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment