summaryrefslogtreecommitdiffstats
path: root/arch/arm64/crypto/sm4-ce-glue.c
diff options
context:
space:
mode:
authorTianjia Zhang <tianjia.zhang@linux.alibaba.com>2022-10-27 14:54:59 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2022-11-04 17:34:31 +0800
commitcb9ba02b07d18172c6a6dcc69410c56482903230 (patch)
treea8c249c36a040c9f92a84dc533f3c29758178e3a /arch/arm64/crypto/sm4-ce-glue.c
parentce41fefd2443c25166458f24621b53a28fff989f (diff)
downloadlinux-stable-cb9ba02b07d18172c6a6dcc69410c56482903230.tar.gz
linux-stable-cb9ba02b07d18172c6a6dcc69410c56482903230.tar.bz2
linux-stable-cb9ba02b07d18172c6a6dcc69410c56482903230.zip
crypto: arm64/sm4 - simplify sm4_ce_expand_key() of CE implementation
Use a 128-bit swap mask and tbl instruction to simplify the implementation for generating SM4 rkey_dec. Also fixed the issue of not being wrapped by kernel_neon_begin/end() when using the sm4_ce_expand_key() function. Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'arch/arm64/crypto/sm4-ce-glue.c')
-rw-r--r--arch/arm64/crypto/sm4-ce-glue.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arm64/crypto/sm4-ce-glue.c b/arch/arm64/crypto/sm4-ce-glue.c
index e56e81b1f35f..ff2d8442d473 100644
--- a/arch/arm64/crypto/sm4-ce-glue.c
+++ b/arch/arm64/crypto/sm4-ce-glue.c
@@ -44,8 +44,10 @@ static int sm4_setkey(struct crypto_skcipher *tfm, const u8 *key,
if (key_len != SM4_KEY_SIZE)
return -EINVAL;
+ kernel_neon_begin();
sm4_ce_expand_key(key, ctx->rkey_enc, ctx->rkey_dec,
crypto_sm4_fk, crypto_sm4_ck);
+ kernel_neon_end();
return 0;
}