diff options
author | Josh Poimboeuf <jpoimboe@redhat.com> | 2017-09-18 15:42:05 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2017-09-20 05:42:34 -0400 |
commit | d7b1722c72aa915283ada27709c6feeb392f6038 (patch) | |
tree | a5b78c49b6286a2d189c56da289a2b2a9b79329a | |
parent | 3ed7b4d67c6745300c9b5c6baa55da1161b57f60 (diff) |
crypto: x86/sha1-avx2 - Fix RBP usage
Using RBP as a temporary register breaks frame pointer convention and
breaks stack traces when unwinding from an interrupt in the crypto code.
Use R11 instead of RBP. Since R11 isn't a callee-saved register, it
doesn't need to be saved and restored on the stack.
Reported-by: Eric Biggers <ebiggers@google.com>
Reported-by: Peter Zijlstra <peterz@infradead.org>
Tested-by: Eric Biggers <ebiggers@google.com>
Acked-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r-- | arch/x86/crypto/sha1_avx2_x86_64_asm.S | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/arch/x86/crypto/sha1_avx2_x86_64_asm.S b/arch/x86/crypto/sha1_avx2_x86_64_asm.S index 1eab79c9ac48..9f712a7dfd79 100644 --- a/arch/x86/crypto/sha1_avx2_x86_64_asm.S +++ b/arch/x86/crypto/sha1_avx2_x86_64_asm.S | |||
@@ -89,7 +89,7 @@ | |||
89 | #define REG_RE %rdx | 89 | #define REG_RE %rdx |
90 | #define REG_RTA %r12 | 90 | #define REG_RTA %r12 |
91 | #define REG_RTB %rbx | 91 | #define REG_RTB %rbx |
92 | #define REG_T1 %ebp | 92 | #define REG_T1 %r11d |
93 | #define xmm_mov vmovups | 93 | #define xmm_mov vmovups |
94 | #define avx2_zeroupper vzeroupper | 94 | #define avx2_zeroupper vzeroupper |
95 | #define RND_F1 1 | 95 | #define RND_F1 1 |
@@ -637,7 +637,6 @@ _loop3: | |||
637 | ENTRY(\name) | 637 | ENTRY(\name) |
638 | 638 | ||
639 | push %rbx | 639 | push %rbx |
640 | push %rbp | ||
641 | push %r12 | 640 | push %r12 |
642 | push %r13 | 641 | push %r13 |
643 | push %r14 | 642 | push %r14 |
@@ -673,7 +672,6 @@ _loop3: | |||
673 | pop %r14 | 672 | pop %r14 |
674 | pop %r13 | 673 | pop %r13 |
675 | pop %r12 | 674 | pop %r12 |
676 | pop %rbp | ||
677 | pop %rbx | 675 | pop %rbx |
678 | 676 | ||
679 | ret | 677 | ret |