
When U-Boot runs at EL2 on ARMv8, OCRAM is in secure world on some SoCs by default. Allocation of memory from OCRAM causes failure in this case. Since main memory is available, allocating memory from heap is successful.
Signed-off-by: Sumit Garg sumit.garg@nxp.com Signed-off-by: York Sun york.sun@nxp.com ---
drivers/crypto/fsl/fsl_rsa.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/crypto/fsl/fsl_rsa.c b/drivers/crypto/fsl/fsl_rsa.c index 32c059f..5192267 100644 --- a/drivers/crypto/fsl/fsl_rsa.c +++ b/drivers/crypto/fsl/fsl_rsa.c @@ -48,8 +48,14 @@ int fsl_mod_exp(struct udevice *dev, const uint8_t *sig, uint32_t sig_len, { uint32_t keylen; struct pk_in_params pkin; - uint32_t desc[MAX_CAAM_DESCSIZE]; - int ret; + uint32_t *desc; + int ret = 0; + + desc = malloc(MAX_CAAM_DESCSIZE); + if (!desc) { + printf("RSA DESC: malloc failed for RSA descriptor\n"); + return -ENOMEM; + }
/* Length in bytes */ keylen = prop->num_bits / 8; @@ -66,10 +72,11 @@ int fsl_mod_exp(struct udevice *dev, const uint8_t *sig, uint32_t sig_len, ret = run_descriptor_jr(desc); if (ret) { debug("%s: RSA failed to verify: %d\n", __func__, ret); - return -EFAULT; + ret = -EFAULT; } + free(desc);
- return 0; + return ret; }
static const struct mod_exp_ops fsl_mod_exp_ops = {