diff mbox

[U-Boot,v1,6/9] crypto: fsl: Allocate memory for descriptor from main memory

Message ID 1494864969-7374-7-git-send-email-york.sun@nxp.com
State Deferred
Delegated to: York Sun
Headers show

Commit Message

York Sun May 15, 2017, 4:16 p.m. UTC
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 mbox

Patch

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 = {