|
@@ -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);
|
|
|
- if (!ctx->g) {
|
|
|
- dma_free_coherent(dev, ctx->p_size, ctx->p, ctx->dma_p);
|
|
|
- ctx->p = NULL;
|
|
|
+ if (!ctx->g)
|
|
|
return -ENOMEM;
|
|
|
- }
|
|
|
memcpy(ctx->g + (ctx->p_size - params->g_size), params->g,
|
|
|
params->g_size);
|
|
|
|
|
@@ -507,18 +504,22 @@ static int qat_dh_set_secret(struct crypto_kpp *tfm, const void *buf,
|
|
|
|
|
|
ret = qat_dh_set_params(ctx, ¶ms);
|
|
|
if (ret < 0)
|
|
|
- return ret;
|
|
|
+ goto err_clear_ctx;
|
|
|
|
|
|
ctx->xa = dma_zalloc_coherent(dev, ctx->p_size, &ctx->dma_xa,
|
|
|
GFP_KERNEL);
|
|
|
if (!ctx->xa) {
|
|
|
- qat_dh_clear_ctx(dev, ctx);
|
|
|
- return -ENOMEM;
|
|
|
+ ret = -ENOMEM;
|
|
|
+ goto err_clear_ctx;
|
|
|
}
|
|
|
memcpy(ctx->xa + (ctx->p_size - params.key_size), params.key,
|
|
|
params.key_size);
|
|
|
|
|
|
return 0;
|
|
|
+
|
|
|
+err_clear_ctx:
|
|
|
+ qat_dh_clear_ctx(dev, ctx);
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static unsigned int qat_dh_max_size(struct crypto_kpp *tfm)
|