crypto: x86/sha1-ssse3 - 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. Swap the usages of R12 and RBP. Use R12 for the REG_D register, and use RBP to store the pre-aligned stack pointer. 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>
This commit is contained in:
parent
d7b1722c72
commit
6488bce756
|
@ -37,7 +37,7 @@
|
|||
#define REG_A %ecx
|
||||
#define REG_B %esi
|
||||
#define REG_C %edi
|
||||
#define REG_D %ebp
|
||||
#define REG_D %r12d
|
||||
#define REG_E %edx
|
||||
|
||||
#define REG_T1 %eax
|
||||
|
@ -74,10 +74,10 @@
|
|||
ENTRY(\name)
|
||||
|
||||
push %rbx
|
||||
push %rbp
|
||||
push %r12
|
||||
push %rbp
|
||||
mov %rsp, %rbp
|
||||
|
||||
mov %rsp, %r12
|
||||
sub $64, %rsp # allocate workspace
|
||||
and $~15, %rsp # align stack
|
||||
|
||||
|
@ -99,10 +99,9 @@
|
|||
xor %rax, %rax
|
||||
rep stosq
|
||||
|
||||
mov %r12, %rsp # deallocate workspace
|
||||
|
||||
pop %r12
|
||||
mov %rbp, %rsp # deallocate workspace
|
||||
pop %rbp
|
||||
pop %r12
|
||||
pop %rbx
|
||||
ret
|
||||
|
||||
|
|
Loading…
Reference in New Issue