提交 6488bce7 编写于 作者: J Josh Poimboeuf 提交者: Herbert Xu

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: NEric Biggers <ebiggers@google.com>
Reported-by: NPeter Zijlstra <peterz@infradead.org>
Tested-by: NEric Biggers <ebiggers@google.com>
Acked-by: NEric Biggers <ebiggers@google.com>
Signed-off-by: NJosh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
上级 d7b1722c
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册