The hash_state_sz field in the QAT request descriptor for AES-CCM
operations was incorrectly set to the digest length. According to
the QAT firmware specification, this field should contain the
length of AAD in quadwords for CCM operations.

Fixes: ab56c4d9ed9a ("crypto/qat: support AES-CCM")

Signed-off-by: Emma Finn <[email protected]>
---
v2:
 * Updated to use 16-byte alignment.
v3:
 * split into two patches.
---
 drivers/crypto/qat/qat_sym_session.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/crypto/qat/qat_sym_session.c 
b/drivers/crypto/qat/qat_sym_session.c
index 98ab82ffb3..2ba4fc0a3a 100644
--- a/drivers/crypto/qat/qat_sym_session.c
+++ b/drivers/crypto/qat/qat_sym_session.c
@@ -2774,7 +2774,8 @@ static int qat_sym_cd_auth_set(struct qat_sym_session 
*cdesc,
                hash->auth_counter.counter = 0;
 
                hash_cd_ctrl->outer_prefix_sz = digestsize;
-               auth_param->hash_state_sz = digestsize;
+               auth_param->hash_state_sz = 
(RTE_ALIGN_CEIL(auth_param->u2.aad_sz,
+                                               ICP_QAT_HW_CCM_AAD_ALIGNMENT) 
>> 3);
 
                memcpy(cdesc->cd_cur_ptr + state1_size, authkey, authkeylen);
                break;
-- 
2.34.1

Reply via email to