diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-03-02 09:51:42 +0100 |
---|---|---|
committer | David Bauer <mail@david-bauer.net> | 2021-03-02 10:54:38 +0100 |
commit | 1265dbafcdce30c6e6db914b70f2824851c0e0b7 (patch) | |
tree | a3bcc3e91b9128eb858437bad2863dbc5ec15af1 /target/linux/generic/backport-5.10/072-crypto-arm-chacha-neon-add-missing-counter-increment.patch | |
parent | d54072587146dd0db9bb52b513234d944edabda3 (diff) | |
download | upstream-1265dbafcdce30c6e6db914b70f2824851c0e0b7.tar.gz upstream-1265dbafcdce30c6e6db914b70f2824851c0e0b7.tar.bz2 upstream-1265dbafcdce30c6e6db914b70f2824851c0e0b7.zip |
kernel-5.10: backport chacha non block size optimizations
These make a big difference when doing WireGuard with small armv7
routers, and the 5.4 backport already has it.
Suggested-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
Cc: David Bauer <mail@david-bauer.net>
Cc: Petr Štetiar <ynezz@true.cz>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'target/linux/generic/backport-5.10/072-crypto-arm-chacha-neon-add-missing-counter-increment.patch')
-rw-r--r-- | target/linux/generic/backport-5.10/072-crypto-arm-chacha-neon-add-missing-counter-increment.patch | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/target/linux/generic/backport-5.10/072-crypto-arm-chacha-neon-add-missing-counter-increment.patch b/target/linux/generic/backport-5.10/072-crypto-arm-chacha-neon-add-missing-counter-increment.patch new file mode 100644 index 0000000000..1e4d2041e5 --- /dev/null +++ b/target/linux/generic/backport-5.10/072-crypto-arm-chacha-neon-add-missing-counter-increment.patch @@ -0,0 +1,38 @@ +From 7f63462faf9eab69132bea9abd48c2c05a93145b Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel <ardb@kernel.org> +Date: Sun, 13 Dec 2020 15:39:29 +0100 +Subject: [PATCH 2/2] crypto: arm/chacha-neon - add missing counter increment + +commit fd16931a2f518a32753920ff20895e5cf04c8ff1 upstream. + +Commit 86cd97ec4b943af3 ("crypto: arm/chacha-neon - optimize for non-block +size multiples") refactored the chacha block handling in the glue code in +a way that may result in the counter increment to be omitted when calling +chacha_block_xor_neon() to process a full block. This violates the skcipher +API, which requires that the output IV is suitable for handling more input +as long as the preceding input has been presented in round multiples of the +block size. Also, the same code is exposed via the chacha library interface +whose callers may actually rely on this increment to occur even for final +blocks that are smaller than the chacha block size. + +So increment the counter after calling chacha_block_xor_neon(). + +Fixes: 86cd97ec4b943af3 ("crypto: arm/chacha-neon - optimize for non-block size multiples") +Reported-by: Eric Biggers <ebiggers@kernel.org> +Signed-off-by: Ard Biesheuvel <ardb@kernel.org> +Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> +Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> +--- + arch/arm/crypto/chacha-glue.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/arm/crypto/chacha-glue.c ++++ b/arch/arm/crypto/chacha-glue.c +@@ -60,6 +60,7 @@ static void chacha_doneon(u32 *state, u8 + chacha_block_xor_neon(state, d, s, nrounds); + if (d != dst) + memcpy(dst, buf, bytes); ++ state[12]++; + } + } + |