4.9-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Gary R Hook <[email protected]>


[ Upstream commit f7cc02b3c3a33a10dd5bb9e5dfd22e47e09503a2 ]

Ensure that the size field is correctly populated for
all AES modes.

Signed-off-by: Gary R Hook <[email protected]>
Signed-off-by: Herbert Xu <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
 drivers/crypto/ccp/ccp-dev-v5.c |    3 +--
 drivers/crypto/ccp/ccp-dev.h    |    1 +
 drivers/crypto/ccp/ccp-ops.c    |    8 ++++++++
 3 files changed, 10 insertions(+), 2 deletions(-)

--- a/drivers/crypto/ccp/ccp-dev-v5.c
+++ b/drivers/crypto/ccp/ccp-dev-v5.c
@@ -278,8 +278,7 @@ static int ccp5_perform_aes(struct ccp_o
        CCP_AES_ENCRYPT(&function) = op->u.aes.action;
        CCP_AES_MODE(&function) = op->u.aes.mode;
        CCP_AES_TYPE(&function) = op->u.aes.type;
-       if (op->u.aes.mode == CCP_AES_MODE_CFB)
-               CCP_AES_SIZE(&function) = 0x7f;
+       CCP_AES_SIZE(&function) = op->u.aes.size;
 
        CCP5_CMD_FUNCTION(&desc) = function.raw;
 
--- a/drivers/crypto/ccp/ccp-dev.h
+++ b/drivers/crypto/ccp/ccp-dev.h
@@ -470,6 +470,7 @@ struct ccp_aes_op {
        enum ccp_aes_type type;
        enum ccp_aes_mode mode;
        enum ccp_aes_action action;
+       unsigned int size;
 };
 
 struct ccp_xts_aes_op {
--- a/drivers/crypto/ccp/ccp-ops.c
+++ b/drivers/crypto/ccp/ccp-ops.c
@@ -692,6 +692,14 @@ static int ccp_run_aes_cmd(struct ccp_cm
                        goto e_ctx;
                }
        }
+       switch (aes->mode) {
+       case CCP_AES_MODE_CFB: /* CFB128 only */
+       case CCP_AES_MODE_CTR:
+               op.u.aes.size = AES_BLOCK_SIZE * BITS_PER_BYTE - 1;
+               break;
+       default:
+               op.u.aes.size = 0;
+       }
 
        /* Prepare the input and output data workareas. For in-place
         * operations we need to set the dma direction to BIDIRECTIONAL


Reply via email to