Commit 673ac6fb authored by Josh Poimboeuf's avatar Josh Poimboeuf Committed by Herbert Xu

crypto: x86/sha256-avx - 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 TBL register, and use
RBP to store the pre-aligned stack pointer.
Reported-by: default avatarEric Biggers <ebiggers@google.com>
Reported-by: default avatarPeter Zijlstra <peterz@infradead.org>
Tested-by: default avatarEric Biggers <ebiggers@google.com>
Acked-by: default avatarEric Biggers <ebiggers@google.com>
Signed-off-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 6488bce7
...@@ -103,7 +103,7 @@ SRND = %rsi # clobbers INP ...@@ -103,7 +103,7 @@ SRND = %rsi # clobbers INP
c = %ecx c = %ecx
d = %r8d d = %r8d
e = %edx e = %edx
TBL = %rbp TBL = %r12
a = %eax a = %eax
b = %ebx b = %ebx
...@@ -350,13 +350,13 @@ a = TMP_ ...@@ -350,13 +350,13 @@ a = TMP_
ENTRY(sha256_transform_avx) ENTRY(sha256_transform_avx)
.align 32 .align 32
pushq %rbx pushq %rbx
pushq %rbp pushq %r12
pushq %r13 pushq %r13
pushq %r14 pushq %r14
pushq %r15 pushq %r15
pushq %r12 pushq %rbp
movq %rsp, %rbp
mov %rsp, %r12
subq $STACK_SIZE, %rsp # allocate stack space subq $STACK_SIZE, %rsp # allocate stack space
and $~15, %rsp # align stack pointer and $~15, %rsp # align stack pointer
...@@ -452,13 +452,12 @@ loop2: ...@@ -452,13 +452,12 @@ loop2:
done_hash: done_hash:
mov %r12, %rsp mov %rbp, %rsp
popq %rbp
popq %r12
popq %r15 popq %r15
popq %r14 popq %r14
popq %r13 popq %r13
popq %rbp popq %r12
popq %rbx popq %rbx
ret ret
ENDPROC(sha256_transform_avx) ENDPROC(sha256_transform_avx)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment