mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 06:57:57 +00:00
d540725871
Without this patch, the chacha block counter is not incremented on neon rounds, resulting in incorrect calculations and corrupt packets. This also switches to using `--no-numbered --zero-commit` so that future diffs are smaller. Reported-by: Hans Geiblinger <cybrnook2002@yahoo.com> Reviewed-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>
60 lines
1.9 KiB
Diff
60 lines
1.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Uros Bizjak <ubizjak@gmail.com>
|
|
Date: Thu, 27 Aug 2020 19:38:31 +0200
|
|
Subject: [PATCH] crypto: poly1305-x86_64 - Use XORL r32,32
|
|
|
|
commit 7dfd1e01b3dfc13431b1b25720cf2692a7e111ef upstream.
|
|
|
|
x86_64 zero extends 32bit operations, so for 64bit operands,
|
|
XORL r32,r32 is functionally equal to XORQ r64,r64, but avoids
|
|
a REX prefix byte when legacy registers are used.
|
|
|
|
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
|
|
Cc: Herbert Xu <herbert@gondor.apana.org.au>
|
|
Cc: "David S. Miller" <davem@davemloft.net>
|
|
Acked-by: Jason A. Donenfeld <Jason@zx2c4.com>
|
|
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
|
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
|
|
---
|
|
arch/x86/crypto/poly1305-x86_64-cryptogams.pl | 8 ++++----
|
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
--- a/arch/x86/crypto/poly1305-x86_64-cryptogams.pl
|
|
+++ b/arch/x86/crypto/poly1305-x86_64-cryptogams.pl
|
|
@@ -246,7 +246,7 @@ $code.=<<___ if (!$kernel);
|
|
___
|
|
&declare_function("poly1305_init_x86_64", 32, 3);
|
|
$code.=<<___;
|
|
- xor %rax,%rax
|
|
+ xor %eax,%eax
|
|
mov %rax,0($ctx) # initialize hash value
|
|
mov %rax,8($ctx)
|
|
mov %rax,16($ctx)
|
|
@@ -2869,7 +2869,7 @@ $code.=<<___;
|
|
.type poly1305_init_base2_44,\@function,3
|
|
.align 32
|
|
poly1305_init_base2_44:
|
|
- xor %rax,%rax
|
|
+ xor %eax,%eax
|
|
mov %rax,0($ctx) # initialize hash value
|
|
mov %rax,8($ctx)
|
|
mov %rax,16($ctx)
|
|
@@ -3963,7 +3963,7 @@ xor128_decrypt_n_pad:
|
|
mov \$16,$len
|
|
sub %r10,$len
|
|
xor %eax,%eax
|
|
- xor %r11,%r11
|
|
+ xor %r11d,%r11d
|
|
.Loop_dec_byte:
|
|
mov ($inp,$otp),%r11b
|
|
mov ($otp),%al
|
|
@@ -4101,7 +4101,7 @@ avx_handler:
|
|
.long 0xa548f3fc # cld; rep movsq
|
|
|
|
mov $disp,%rsi
|
|
- xor %rcx,%rcx # arg1, UNW_FLAG_NHANDLER
|
|
+ xor %ecx,%ecx # arg1, UNW_FLAG_NHANDLER
|
|
mov 8(%rsi),%rdx # arg2, disp->ImageBase
|
|
mov 0(%rsi),%r8 # arg3, disp->ControlPc
|
|
mov 16(%rsi),%r9 # arg4, disp->FunctionEntry
|