| From 2896d81b062cf695d15201616c393ac9b317b79f Mon Sep 17 00:00:00 2001 |
| From: Gilad Ben-Yossef <gilad@benyossef.com> |
| Date: Tue, 2 Jul 2019 14:39:19 +0300 |
| Subject: [PATCH] crypto: ccree - account for TEE not ready to report |
| |
| commit 76a95bd8f9e10cade9c4c8df93b5c20ff45dc0f5 upstream. |
| |
| When ccree driver runs it checks the state of the Trusted Execution |
| Environment CryptoCell driver before proceeding. We did not account |
| for cases where the TEE side is not ready or not available at all. |
| Fix it by only considering TEE error state after sync with the TEE |
| side driver. |
| |
| Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com> |
| Fixes: ab8ec9658f5a ("crypto: ccree - add FIPS support") |
| CC: stable@vger.kernel.org # v4.17+ |
| Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/crypto/ccree/cc_fips.c b/drivers/crypto/ccree/cc_fips.c |
| index 5ad3ffb7acaa..040e09c0e1af 100644 |
| --- a/drivers/crypto/ccree/cc_fips.c |
| +++ b/drivers/crypto/ccree/cc_fips.c |
| @@ -21,7 +21,13 @@ static bool cc_get_tee_fips_status(struct cc_drvdata *drvdata) |
| u32 reg; |
| |
| reg = cc_ioread(drvdata, CC_REG(GPR_HOST)); |
| - return (reg == (CC_FIPS_SYNC_TEE_STATUS | CC_FIPS_SYNC_MODULE_OK)); |
| + /* Did the TEE report status? */ |
| + if (reg & CC_FIPS_SYNC_TEE_STATUS) |
| + /* Yes. Is it OK? */ |
| + return (reg & CC_FIPS_SYNC_MODULE_OK); |
| + |
| + /* No. It's either not in use or will be reported later */ |
| + return true; |
| } |
| |
| /* |
| -- |
| 2.7.4 |
| |