Skip to content

Commit 2dd3fde

Browse files
horiagherbertx
authored andcommitted
crypto: caam - fix SHA support detection
The addition of Chacha20 + Poly1305 authenc support inadvertently broke detection of algorithms supported by MDHA (Message Digest Hardware Accelerator), fix it. Fixes: d6bbd4e ("crypto: caam/jr - add support for Chacha20 + Poly1305") Signed-off-by: Horia Geantă <horia.geanta@nxp.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
1 parent 04e6d25 commit 2dd3fde

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

drivers/crypto/caam/caamalg.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3476,7 +3476,7 @@ static int __init caam_algapi_init(void)
34763476
* Skip algorithms requiring message digests
34773477
* if MD or MD size is not supported by device.
34783478
*/
3479-
if ((c2_alg_sel & ~OP_ALG_ALGSEL_SUBMASK) == 0x40 &&
3479+
if (is_mdha(c2_alg_sel) &&
34803480
(!md_inst || t_alg->aead.maxauthsize > md_limit))
34813481
continue;
34823482

drivers/crypto/caam/desc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1155,6 +1155,7 @@
11551155
#define OP_ALG_ALGSEL_DES (0x20 << OP_ALG_ALGSEL_SHIFT)
11561156
#define OP_ALG_ALGSEL_3DES (0x21 << OP_ALG_ALGSEL_SHIFT)
11571157
#define OP_ALG_ALGSEL_ARC4 (0x30 << OP_ALG_ALGSEL_SHIFT)
1158+
#define OP_ALG_CHA_MDHA (0x40 << OP_ALG_ALGSEL_SHIFT)
11581159
#define OP_ALG_ALGSEL_MD5 (0x40 << OP_ALG_ALGSEL_SHIFT)
11591160
#define OP_ALG_ALGSEL_SHA1 (0x41 << OP_ALG_ALGSEL_SHIFT)
11601161
#define OP_ALG_ALGSEL_SHA224 (0x42 << OP_ALG_ALGSEL_SHIFT)

drivers/crypto/caam/error.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77

88
#ifndef CAAM_ERROR_H
99
#define CAAM_ERROR_H
10+
11+
#include "desc.h"
12+
1013
#define CAAM_ERROR_STR_MAX 302
1114

1215
void caam_strstatus(struct device *dev, u32 status, bool qi_v2);
@@ -17,4 +20,10 @@ void caam_strstatus(struct device *dev, u32 status, bool qi_v2);
1720
void caam_dump_sg(const char *level, const char *prefix_str, int prefix_type,
1821
int rowsize, int groupsize, struct scatterlist *sg,
1922
size_t tlen, bool ascii);
23+
24+
static inline bool is_mdha(u32 algtype)
25+
{
26+
return (algtype & OP_ALG_ALGSEL_MASK & ~OP_ALG_ALGSEL_SUBMASK) ==
27+
OP_ALG_CHA_MDHA;
28+
}
2029
#endif /* CAAM_ERROR_H */

0 commit comments

Comments
 (0)