Skip to content

Commit

Permalink
crypto: x86/sha256-ssse3 - Fix RBP usage
Browse files Browse the repository at this point in the history
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: 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>
  • Loading branch information
Josh Poimboeuf authored and Herbert Xu committed Sep 20, 2017
1 parent d3dfbfe commit 539012d
Showing 1 changed file with 7 additions and 8 deletions.
15 changes: 7 additions & 8 deletions arch/x86/crypto/sha256-ssse3-asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ SRND = %rsi # clobbers INP
c = %ecx
d = %r8d
e = %edx
TBL = %rbp
TBL = %r12
a = %eax
b = %ebx

Expand Down Expand Up @@ -356,13 +356,13 @@ a = TMP_
ENTRY(sha256_transform_ssse3)
.align 32
pushq %rbx
pushq %rbp
pushq %r12
pushq %r13
pushq %r14
pushq %r15
pushq %r12
pushq %rbp
mov %rsp, %rbp

mov %rsp, %r12
subq $STACK_SIZE, %rsp
and $~15, %rsp

Expand Down Expand Up @@ -462,13 +462,12 @@ loop2:

done_hash:

mov %r12, %rsp

popq %r12
mov %rbp, %rsp
popq %rbp
popq %r15
popq %r14
popq %r13
popq %rbp
popq %r12
popq %rbx

ret
Expand Down

0 comments on commit 539012d

Please sign in to comment.