]> git.baikalelectronics.ru Git - kernel.git/commit
crypto: arm64/aes-neonbs - fix returning final keystream block
authorEric Biggers <ebiggers@google.com>
Fri, 1 Feb 2019 07:51:42 +0000 (23:51 -0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 8 Feb 2019 07:30:08 +0000 (15:30 +0800)
commita093942b605992ecfb67b999255654ca4b9337be
treecdacd4ffb49119d01c1b14e69210c811c9aab9ae
parente051427062ea502de55be8e99cabc8ff0c078ec1
crypto: arm64/aes-neonbs - fix returning final keystream block

The arm64 NEON bit-sliced implementation of AES-CTR fails the improved
skcipher tests because it sometimes produces the wrong ciphertext.  The
bug is that the final keystream block isn't returned from the assembly
code when the number of non-final blocks is zero.  This can happen if
the input data ends a few bytes after a page boundary.  In this case the
last bytes get "encrypted" by XOR'ing them with uninitialized memory.

Fix the assembly code to return the final keystream block when needed.

Fixes: ae405f77ffc7 ("crypto: arm64/aes - don't use IV buffer to return final keystream block")
Cc: <stable@vger.kernel.org> # v4.11+
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/arm64/crypto/aes-neonbs-core.S