The following are the conditions for requesting AES fallback cipher.
        -  AES-192
        - AES-XTS request with len <= 512 byte (Allow messages of length
          less than 512 bytes for all other AES encryption algorithms other
          than AES XTS)
        - AES-XTS request with len > QCE_SECTOR_SIZE and is not a multiple
          of it

Signed-off-by: Thara Gopinath <thara.gopin...@linaro.org>
---
 drivers/crypto/qce/skcipher.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/crypto/qce/skcipher.c b/drivers/crypto/qce/skcipher.c
index 10e85b1fc0fd..8599250946b7 100644
--- a/drivers/crypto/qce/skcipher.c
+++ b/drivers/crypto/qce/skcipher.c
@@ -277,14 +277,19 @@ static int qce_skcipher_crypt(struct skcipher_request 
*req, int encrypt)
                if (!IS_ALIGNED(req->cryptlen, blocksize))
                        return -EINVAL;
 
-       /* qce is hanging when AES-XTS request len > QCE_SECTOR_SIZE and
-        * is not a multiple of it; pass such requests to the fallback
+       /*
+        * Conditions for requesting a fallback cipher
+        * AES-192 (not supported by crypto engine (CE))
+        * AES-XTS request with len <= 512 byte (not recommended to use CE)
+        * AES-XTS request with len > QCE_SECTOR_SIZE and
+        * is not a multiple of it.(Revisit this condition to check if it is
+        * needed in all versions of CE)
         */
        if (IS_AES(rctx->flags) &&
-           (((keylen != AES_KEYSIZE_128 && keylen != AES_KEYSIZE_256) ||
-             req->cryptlen <= aes_sw_max_len) ||
-            (IS_XTS(rctx->flags) && req->cryptlen > QCE_SECTOR_SIZE &&
-             req->cryptlen % QCE_SECTOR_SIZE))) {
+           ((keylen != AES_KEYSIZE_128 && keylen != AES_KEYSIZE_256) ||
+           (IS_XTS(rctx->flags) && ((req->cryptlen <= aes_sw_max_len) ||
+           (req->cryptlen > QCE_SECTOR_SIZE &&
+           req->cryptlen % QCE_SECTOR_SIZE))))) {
                skcipher_request_set_tfm(&rctx->fallback_req, ctx->fallback);
                skcipher_request_set_callback(&rctx->fallback_req,
                                              req->base.flags,
-- 
2.25.1

Reply via email to