Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 539012dc authored by Josh Poimboeuf's avatar Josh Poimboeuf Committed by Herbert Xu
Browse files

crypto: x86/sha256-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 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 d3dfbfe2
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -95,7 +95,7 @@ SRND = %rsi # clobbers INP
c = %ecx
d = %r8d
e = %edx
TBL = %rbp
TBL = %r12
a = %eax
b = %ebx

@@ -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

@@ -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