From: Eric Biggers <ebiggers@kernel.org>
To: linux-crypto@vger.kernel.org, Herbert Xu <herbert@gondor.apana.org.au>
Cc: x86@kernel.org, linux-arm-kernel@lists.infradead.org,
Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: [PATCH 0/8] crypto: test the !may_use_simd() fallback code
Date: Tue, 12 Mar 2019 22:12:44 -0700 [thread overview]
Message-ID: <20190313051252.2917-1-ebiggers@kernel.org> (raw)
All crypto API algorithms are supposed to support the case where they
are called in a context where SIMD instructions are unusable, e.g. IRQ
context on some architectures. However, this isn't tested for by the
self-tests, causing bugs to go undetected.
This patch series therefore updates the self-tests to test the no-SIMD
code. It works by converting all may_use_simd() checks to a new macro
crypto_simd_usable(), which also returns false when the self-tests have
disabled SIMD in crypto algorithms on the current CPU for test purposes.
For now, all no-SIMD testing is limited to the extra crypto self-tests,
because it might be a bit too invasive for the regular self-tests.
But this could be changed later.
This already found bugs in the arm64 implementations of AES-GCM and
ChaCha. These are fixed by the first two patches. Following this, the
tests pass on x86, arm, and arm64.
This patch series is based on top of my other pending patch series
"crypto: add SIMD helpers for AEADs". It can also be found in git at:
URL: https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git
Branch: crypto-nosimd-tests
Eric Biggers (8):
crypto: chacha-generic - fix use as arm64 no-NEON fallback
crypto: arm64/gcm-aes-ce - fix no-NEON fallback code
crypto: simd,testmgr - introduce crypto_simd_usable()
crypto: x86 - convert to use crypto_simd_usable()
crypto: arm - convert to use crypto_simd_usable()
crypto: arm64 - convert to use crypto_simd_usable()
crypto: simd - convert to use crypto_simd_usable()
crypto: testmgr - test the !may_use_simd() fallback code
arch/arm/crypto/chacha-neon-glue.c | 5 +-
arch/arm/crypto/crc32-ce-glue.c | 5 +-
arch/arm/crypto/crct10dif-ce-glue.c | 3 +-
arch/arm/crypto/ghash-ce-glue.c | 7 +-
arch/arm/crypto/nhpoly1305-neon-glue.c | 3 +-
arch/arm/crypto/sha1-ce-glue.c | 5 +-
arch/arm/crypto/sha1_neon_glue.c | 5 +-
arch/arm/crypto/sha2-ce-glue.c | 5 +-
arch/arm/crypto/sha256_neon_glue.c | 5 +-
arch/arm/crypto/sha512-neon-glue.c | 5 +-
arch/arm64/crypto/aes-ce-ccm-glue.c | 7 +-
arch/arm64/crypto/aes-ce-glue.c | 5 +-
arch/arm64/crypto/aes-glue.c | 4 +-
arch/arm64/crypto/aes-neonbs-glue.c | 2 +-
arch/arm64/crypto/chacha-neon-glue.c | 5 +-
arch/arm64/crypto/crct10dif-ce-glue.c | 5 +-
arch/arm64/crypto/ghash-ce-glue.c | 17 ++-
arch/arm64/crypto/nhpoly1305-neon-glue.c | 3 +-
arch/arm64/crypto/sha1-ce-glue.c | 7 +-
arch/arm64/crypto/sha2-ce-glue.c | 7 +-
arch/arm64/crypto/sha256-glue.c | 5 +-
arch/arm64/crypto/sha3-ce-glue.c | 5 +-
arch/arm64/crypto/sha512-ce-glue.c | 7 +-
arch/arm64/crypto/sm3-ce-glue.c | 7 +-
arch/arm64/crypto/sm4-ce-glue.c | 5 +-
arch/x86/crypto/aesni-intel_glue.c | 8 +-
arch/x86/crypto/chacha_glue.c | 6 +-
arch/x86/crypto/crc32-pclmul_glue.c | 5 +-
arch/x86/crypto/crc32c-intel_glue.c | 7 +-
arch/x86/crypto/crct10dif-pclmul_glue.c | 7 +-
arch/x86/crypto/ghash-clmulni-intel_glue.c | 9 +-
arch/x86/crypto/nhpoly1305-avx2-glue.c | 5 +-
arch/x86/crypto/nhpoly1305-sse2-glue.c | 5 +-
arch/x86/crypto/poly1305_glue.c | 4 +-
arch/x86/crypto/sha1_ssse3_glue.c | 7 +-
arch/x86/crypto/sha256_ssse3_glue.c | 7 +-
arch/x86/crypto/sha512_ssse3_glue.c | 10 +-
crypto/chacha_generic.c | 2 +-
crypto/simd.c | 8 +-
crypto/testmgr.c | 142 +++++++++++++++++----
include/crypto/internal/simd.h | 24 ++++
41 files changed, 272 insertions(+), 123 deletions(-)
--
2.21.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2019-03-13 10:36 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-13 5:12 Eric Biggers [this message]
2019-03-13 5:12 ` [PATCH 1/8] crypto: chacha-generic - fix use as arm64 no-NEON fallback Eric Biggers
2019-03-13 7:50 ` Ard Biesheuvel
2019-03-13 5:12 ` [PATCH 2/8] crypto: arm64/gcm-aes-ce - fix no-NEON fallback code Eric Biggers
2019-03-13 10:29 ` Ard Biesheuvel
2019-03-13 5:12 ` [PATCH 3/8] crypto: simd,testmgr - introduce crypto_simd_usable() Eric Biggers
2019-03-13 10:31 ` [PATCH 3/8] crypto: simd, testmgr " Ard Biesheuvel
2019-03-13 5:12 ` [PATCH 4/8] crypto: x86 - convert to use crypto_simd_usable() Eric Biggers
2019-03-13 10:32 ` Ard Biesheuvel
2019-03-13 5:12 ` [PATCH 5/8] crypto: arm " Eric Biggers
2019-03-13 10:33 ` Ard Biesheuvel
2019-03-13 5:12 ` [PATCH 6/8] crypto: arm64 " Eric Biggers
2019-03-13 10:33 ` Ard Biesheuvel
2019-03-13 5:12 ` [PATCH 7/8] crypto: simd " Eric Biggers
2019-03-13 10:34 ` Ard Biesheuvel
2019-03-13 5:12 ` [PATCH 8/8] crypto: testmgr - test the !may_use_simd() fallback code Eric Biggers
2019-03-13 10:35 ` Ard Biesheuvel
2019-03-13 10:50 ` [PATCH 0/8] crypto: " Ard Biesheuvel
2019-03-22 13:03 ` Herbert Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190313051252.2917-1-ebiggers@kernel.org \
--to=ebiggers@kernel.org \
--cc=ard.biesheuvel@linaro.org \
--cc=herbert@gondor.apana.org.au \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-crypto@vger.kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).