On 5/14/2019 7:45 PM, Iuliana Prodan wrote:
[...]
> diff --git a/drivers/crypto/caam/caampkc.c b/drivers/crypto/caam/caampkc.c
[...]
> @@ -218,27 +230,45 @@ static struct rsa_edesc *rsa_edesc_alloc(struct 
> akcipher_request *req,
>       struct caam_rsa_ctx *ctx = akcipher_tfm_ctx(tfm);
>       struct device *dev = ctx->dev;
>       struct caam_rsa_req_ctx *req_ctx = akcipher_request_ctx(req);
> +     struct caam_rsa_key *key = &ctx->key;
>       struct rsa_edesc *edesc;
>       gfp_t flags = (req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP) ?
>                      GFP_KERNEL : GFP_ATOMIC;
>       int sg_flags = (flags == GFP_ATOMIC) ? SG_MITER_ATOMIC : 0;
>       int sgc;
> -     int sec4_sg_index, sec4_sg_len = 0, sec4_sg_bytes;
> +     int sec4_sg_index = 0, sec4_sg_len = 0, sec4_sg_bytes;
Initialization of sec4_sg_index not needed, it's unconditionally set further 
below.

[...]
> -     if (src_nents > 1)
> -             sec4_sg_len = src_nents;
> +     if (!diff_size && src_nents == 1)
> +             sec4_sg_len = 0; /* no need for an input hw s/g table */
> +     else
> +             sec4_sg_len = src_nents + !!diff_size;
> +     sec4_sg_index = sec4_sg_len;
>       if (dst_nents > 1)
>               sec4_sg_len += dst_nents;
>  

[...]
> @@ -1060,6 +1107,12 @@ static int __init caam_pkc_init(void)
>               goto out_put_dev;
>       }
>  
> +     /* allocate zero buffer, used for padding input */
> +     zero_buffer = kzalloc(CAAM_RSA_MAX_INPUT_SIZE - 1, GFP_DMA |
> +                           GFP_KERNEL);
> +     if (!zero_buffer)
> +             return -ENOMEM;
Need to take care of freeing resources on error path.

> +
>       err = crypto_register_akcipher(&caam_rsa);
>       if (err)
>               dev_warn(ctrldev, "%s alg registration failed\n",

Thanks,
Horia

Reply via email to